std::array
是 C++
标准库中的一个容器,定义在 <array>
头文件中。它是一个固定大小的数组容器,封装了 C
风格数组,并提供了更多的功能和安全性。与 C
风格数组相比,std::array
具有以下优点:
(1)安全性:提供了越界检查(通过 at()
方法)。
(2)功能性:支持迭代器、STL
算法和其他容器操作。
(3)一致性:与 STL
容器接口一致,易于使用。
(1)固定大小:std::array
的大小在编译时确定,不能在运行时动态调整。
(2)连续存储:元素在内存中是连续存储的,类似于 C
风格数组。
(3)值语义:std::array
是值类型,支持拷贝和赋值操作。
template< class T, std::size_t N >
struct array;
T
:元素的类型。
N
:数组的大小(元素的数量)。
#include <array>
#include <iostream>int main() {// 创建一个包含 5 个 int 元素的 std::arraystd::array<int, 5> arr = {1, 2, 3, 4, 5};// 使用范围 for 循环遍历for (int i : arr) {std::cout << i << " "; // 输出: 1 2 3 4 5}return 0;
}
std::array<int, 3> arr = {10, 20, 30};
std::cout << arr[1]; // 输出: 20
std::cout << arr.at(1); // 输出: 20
std::cout << arr.front(); // 输出: 10
std::cout << arr.back(); // 输出: 30
std::cout << arr.size(); // 输出: 3
std::cout << arr.max_size(); // 输出: 3
std::array<int, 3> arr = {10, 20, 30};// 使用迭代器遍历
for (auto it = arr.begin(); it != arr.end(); ++it) {std::cout << *it << " "; // 输出: 10 20 30
}// 使用反向迭代器
for (auto it = arr.rbegin(); it != arr.rend(); ++it) {std::cout << *it << " "; // 输出: 30 20 10
}
std::array<int, 5> arr;
arr.fill(42); // 将所有元素设置为 42for (int i : arr) {std::cout << i << " "; // 输出: 42 42 42 42 42
}
std::array<int, 3> arr1 = {1, 2, 3};
std::array<int, 3> arr2 = {1, 2, 4};if (arr1 < arr2) {std::cout << "arr1 is less than arr2"; // 输出: arr1 is less than arr2
}
template<class T, std::size_t N>
struct array {T _M_elems[N]; // 底层 C 风格数组// 其他成员函数(如 begin(), end(), size(), at() 等)
};