C++11之array原理及使用

C++11中array模板的使用与应用

C++11中增加了array,代替原来C语言中的数组。
同时,也避免了动态数组new和delete的使用,内存自动管理。
而且,执行效率比vector高。


一 定义
在array头文件中定义:

template< 
    class T, 
    std::size_t N 
> struct array;


如果我们自己来写一个array模板类的话,大概应该想这个样子:

 

template <typename T, int n>
class myArray
{
  public:
    myArray() {a = new T[n];}
    ~myArray() {delete[] a;}
    T& operator[](int i) {return *(a+i);}


  private:
    T* a;
};



二 一维数组
1 声明

 

 

 

array<int, 5> arr1 = {1, 2, 3, 4, 5};

或者

array<int, 5> arr1{{1, 2, 3, 4, 5}};

 


2 访问
例如:取数组的第一个元素

 

 

int n1 = arr1[0];
int n2 = arr1.at(0); 



3 遍历

 

for(size_t i = 0; i < arr1.size(); ++i)
{
	cout << arr1[0]<< endl;
	// cout << arr1.at(0)<< endl;
}



三 二维数组
1 声明

 

array<array<int, 3>, 2> arr2d = {11,12,13,21,22,23};



2 访问
例如:还是取第一个元素

 

int n3 = arr2d[0][0];



3 遍历

 

for(size_t i = 0; i < arr2d.size(); ++i)
{
	for(size_t j= 0; j < arr2d[i].size(); ++j)
	{
		cout << arr2d[i][j] << '\t';
	}
	cout << endl;
}



可以看到,二位数组实际上也是一个一维数组,其元素是二位数组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值