C++标准库中,<array>
头文件定义了一个名为std::array
的固定大小的数组容器。std::array
是一个模板类,它提供了一种便捷的方式来处理固定大小的数组,同时提供了标准容器的一些功能,如迭代器支持、随机访问以及成员函数等。
std::array基本语法:
#include <array>
std::array<T, N> array_name;
T
是数组中元素的类型,N
是数组的大小,必须是一个非负整数。
std::array 主要特性:
-
固定大小:
std::array
的大小在编译时是固定的,这意味着它不能动态地改变大小。这是与std::vector
等动态数组容器的主要区别。 -
类型安全:由于数组大小是模板参数的一部分,因此
std::array
提供了类型安全,尝试访问数组边界之外的元素将导致编译时错误(如果使用了正确的索引)。 -
标准容器接口:
std::array
提供了与标准容器相似的接口,包括迭代器、begin()
和end()
成员函数、size()
成员函数等。 -
性能:由于
std::array
是固定大小的,并且存储在连续的内存块中,因此它提供了与原生数组相似的性能。
std::array
示例:
#include <iostream>
#include <array>
int main() {
// 定义一个大小为5的int数组
std::array<int, 5> myArray = {1, 2, 3, 4, 5};
// 使用下标访问元素
std::cout << "Element at index 2: " << myArray[2] << std::endl;
// 使用at()成员函数访问元素(提供边界检查)
try {
std::cout << "Element at index 4: " << myArray.at(4) << std::endl;
// 尝试访问超出边界的元素将导致std::out_of_range异常
// std::cout << "Element at index 5: " << myArray.at(5) << std::endl;
} catch (const std::out_of_range& e) {
std::cerr << "Out of range error: " << e.what() << std::endl;
}
// 使用范围for循环遍历数组
for (int elem : myArray) {
std::cout << elem << " ";
}
std::cout << std::endl;
// 使用迭代器遍历数组
for (auto it = myArray.begin(); it != myArray.end(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
return 0;
}