c++中数组类型继承了C语言中的特定,但是使用的过程中需要注意到数组越界等问题。为了更加安全的对数组进行操作,C++11提出了数组模板类array
1、array模板类的定义
1.1 模板类的声明
数组类是固定大小的序列容器,它们包含以严格线性序列排序的特定数量的元素。数组类具有固定大小,并且不通过分配器管理其元素的分配,它们是封装固定大小元素数组的聚合类型。
template<class T,size_t N> class array;
1.2 容器属性
- 序列容器中的元素按严格的线性顺序排序。各个元素按其顺序访问它们的位置。
 - 元素存储在连续的存储器位置,允许对元素进行恒定时间随机访问。可以偏移元素的指针以访问其他元素。
 - 容器使用隐式构造函数和析构函数静态分配所需的空间。它的大小是编译时常量。没有内存或时间开销。
1.3 array模板类的说明
T为数组存储的数据类型N为元素的个数 
2、array的使用
2.1 iterators
| begin | 头部 | 
|---|---|
| end | 尾部 | 
参考下面的代码:
#include <bits/stdc++.h>#include <array>using namespace std;int main(){array<int,5> arr = {1,2,3,4,5};for(auto it = arr.begin();it < arr.end();it++){cout << *it << " ";}system("pause");return 0;}
2.2 capacity
模板类array容器的大小也是固定的,可以通过sizeof(),``size(),max_size(),empty()等函数进行检测
#include <iostream>#include <array>int main(void) {std::array<int, 5> arr = {1, 2, 3, 4, 5};std::cout << "sizeof(array) = " << sizeof(arr) << std::endl;std::cout << "size of array = " << arr.size() << std::endl;std::cout << "max_size of array = " << arr.max_size() << std::endl;if (arr.empty()) {std::cout << "array is empty!" << std::endl;} else {std::cout << "array is not empty!" << std::endl;}return 0;}
运行结果:
sizeof(array) = 20size of array = 5max_size of array = 5array is not empty!
2.3 获取元素
可以通过下标[ ]、at()、front()、back()、data()等函数访问array容器内的元素。
| operator[ ] | Access element | 
|---|---|
| at | Access element | 
| front | Access first element | 
| back | Access last element | 
| data | Get pointer to first data | 
2.4 修改
可以使用fill()、swap()等函数对array容器整体进行操作。
| fill | Fill array with value | 
|---|---|
| swap | Swap content | 
fill(value):将数组里面的数据都设置成valuetemp.swap(arr):将arr中的数据复制到temp中
2.5 比较 compare
还可以使用> < ==等符号对两个array数组容器进行比较。
