数组容器, 是存储数组的容器, 是C类型数组的扩充, 可以使用迭代器进行操作;
数组一般在初始化过程中赋值, 如果想替换已有的值, 一种方法是遍历所有的值, 较复杂;另一种方法是通过复制去重新赋值, 实现快速赋值;
当你想要一个执行时效率高,而又不想自己管理内存的时候,就用它:array
array和内置数组的差别在哪?为什么我们要用array?
array是为替代内置数组而设计的,它通过提供更好,更安全的接口,让数组更紧凑,效率更高(这里指编码(编写)效率,而不是执行效率)。
注:编译效率,一般还是内建类型更高,当然也不一定,不过编译效率大部分时候不重要。
//现在改用使用<array>,很方便,用起来和STL<vector>一样的
//执行效率比<vector>高,几乎和int myarray[5]效率一样
array数组容器的创建及元素的输出
方法一:
#include "stdafx.h"
#include <iostream>
#include <array>
using namespace std;
int main()
{
//--这是1维数组
array<int, 5> myarray = { 1, 2, 3, 4, 5 };
cout << "myarray=" << endl;
for (size_t n = 0; n<myarray.size(); n++)
{
cout << myarray[n] << '\t';//读取array数组容器中的元素
}
cout << endl;
//当然也可以使用
cout << "myarray=" << endl;
for (size_t n = 0; n<myarray.size(); n++)
{
cout << myarray.at(n) << '\t';//读取array数组容器中的元素
}
cout << endl;
//-----------------------------------------------
//--这是2维数组,共3行2列
array<array<int, 2>, 3 > myarray2D = { 1, 2, 3, 4, 5, 6 };
//-----------------------------------------------
cout << "myarray2D=" << endl;
for (size_t m = 0; m<myarray2D.size(); m++){
for (size_t n = 0; n<myarray2D[m].size(); n++){
cout << myarray2D[m][n] << '\t';
}
cout << endl;
}
cout << endl;
return 0;
}
方法二:
#include "stdafx.h"
#include <iostream>
#include <array>
using namespace std;
int main()
{
std::array<int, 5> ia = { 1, 2, 35, 4, 55 };
for (const auto i : ia)
{
cout << i << " ";//这样表示依次输出array数组中的元素
}
cout << endl;
std::array<int, 5> ia2; // 空数组
//ia2 = {1, 2, 3, 4, 5}; //写法错误
ia2 = ia;
for (const auto i : ia2)
{
std::cout << i << " ";
}
return 0;
}