当先锋百科网

首页 1 2 3 4 5 6 7

数组容器, 是存储数组的容器, 是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;
}