template<typename T,typename s_size>
std::array<int ,10> a; // 定义数组大小为10 ,类型为int的数组
std::array<int ,10> a = {}; // c++ 11用法,初始化
std::array<int ,5> a = {1,2,3,4,5,6}; 挨个初始值
std:array<int ,5> a = {1};// 除开第一个元素会初始为1,后面四个会初始始为0
// 接口
a.empty() // 是否为空
a.size() ;// 大小
a.max_size();;// 最大上限,一般用不着
// operrator == <!= > <= >= 重载操作符
a.swap(b);
std::swap(a,b); array的交互是:值与值交互,当数组大时,可能会很慢,其它类型的则是指针的交换
//访问元素
a[1]
&a[0];
a.front() // 不能于用空数组,否则不知跑到那
a.back() // 不能于用空数组,否则不知跑到那
// 迭代器相关
a.begin();// 第一个
a.end();// 有效值最后一个的下一位,这个肯定是个空值
a.cbegin();// 返回const的第一个;即是不可修改
a.cend();
a.rbegin();// 倒数第一个
a.rend();// 最后一个,倒序
a.crbegin();不可修改的
a.crend(); 不可修改的
// 和C的接口互用
std::array<char,100> carr;
strcpy(&carr[0],"hello,world\n");
printf("%s",&carr[0]);
// 错误用法,
printf("%s",carr.begin());
// 特殊的地方
auto info std::get<1>(charr);
// 重置数组,全部为0
carr.fill(0)
// 异常 exception
c.at(pos);
copy mov swap
使用array场景,使用固定成员的场景,与原生的C++数 组,效率是一样的
使用array不好的地方,他在栈上,复制或赋值,他是需要很多内存的