C++基础 – 容器 – array
array
c++11封装固定大小数组的容器。不同于vector,不能自动扩展。头文件 <array>
定义:
template<class T,
std::size_t N
> class array;
参数解释:
1. T 元素类型
2. N 元素个数
常用函数
operator()
reference operator[](size_type pos);
const_reference operator[](size_type pos) const;
返回位于指定位置pos的元素的引用。不进行边界检查。
at()
reference at(size_type pos);
const_reference at(size_t pos) const;
返回位于指定位置pos的元素的引用。有边界检查。如果pos不在容器范围内,则抛出std::out_of_range类型的异常。
front()
reference front();
const_reference front() const;
返回容器的第一个元素的引用。在空容器上行为未定义。
back()
reference back();
const_reference back() const;
返回容器的最后一个元素的引用。在空容器上行为未定义。
data()
T* data() noexcept; //c++17
constexpr T* data() noexcept; //c++17
const T* data() const noexcept;
constexpr const T* data() const noexcept;
返回指向元素存储的底层数组的指针。指针满足范围[data(); data() + size())
empty()
constexpr bool empty() const noexcept;
检查容器是否为空
size()
size_type size() const noexcept;
返回容器可容纳的元素个数
fill()
void fill(const T& value);
constexpr void fill(const T& value); //c++20
将给定value赋值给所有元素
简单使用示例
#include <array>
#include <iostream>
int main(int argc, char** argv) {
std::array<int, 3> arr = {1, 2, 3};
for(size_t i = 0; i < arr.size(); ++i) {
if(i) {
std::cout << " ";
}
std::cout << arr[i];
}
std::cout << std::endl;
try {
arr.at(3) = 4;
} catch (std::exception& e) {
std::cout << "exception: " << e.what() << std::endl;
}
arr[3] = 4; //未定义行为,可能会core
return 0;
}