std::array是一个支持随机访问且大小(size)固定的容器(译注:可以认为是一个紧缩版的vector吧)。它有如下特点:
1.不预留多余空间,只分配必须空间,如
array<int,5> a={1,2};//a.size=a.capacity()
2.可以使用初始化表(initializer list)的方式进行初始化。
array<int,3> arr={1,2,3}
3.不支持隐式指针类型转换
array<int,3> arr={1,2,3} int *p=arr;//error int *pp=arr.data();//right
4.它是不支持由子类到基类的自动类型转换的
struct Apple : Fruit { /* … */ }; struct Pear : Fruit { /* … */ }; void nasty(array<fruit *,10>& f) { f[7] = new Pear(); }; array<apple ,10> apples; // … nasty(apples); // 错误: 不能将array转换为array;
序列for循环语句
序列for循环语句允许重复遍历一组序列,而这组序列可以是任何可以重复遍历的序列,如由begin()和end()函数定义的STL序列。所有的标准容器都可用作这种序列,同时它也同样可以是std::string,初始化列表(list),数组,以及任何由begin()和end()函数定义的序列,例如输入流。
array<int,3> arr={1,2,3}; for(auto val : arr) { cout<<val<<endl; }