首页 > 代码库 > C++11之array原理及使用
C++11之array原理及使用
C++11中增减了array,代替原来C语言中的数组。
同时,也避免了动态数组new和delete的使用,内存自动管理。
而且,执行效率比vector高。
一 定义
在array头文件中定义:
如果我们自己来写一个array模板类的话,大概应该想这个样子:
二 一维数组
1 声明
2 访问
例如:取数组的第一个元素
3 遍历
三 二维数组
1 声明
2 访问
例如:还是取第一个元素
3 遍历
可以看到,二位数组实际上也是一个一维数组,其元素是二位数组
同时,也避免了动态数组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; }
可以看到,二位数组实际上也是一个一维数组,其元素是二位数组
C++11之array原理及使用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。