温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C++11的array容器怎么使用

发布时间:2021-11-24 11:19:30 来源:亿速云 阅读:108 作者:iii 栏目:大数据

本篇内容介绍了“C++11的array容器怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!                              

内置数组

数组是C语言中最常用的数据结构之一,但是它的使用比较麻烦。首先是大小没有管理,二是越界操作没有检查。虽然C/C++也提供了一些解决办法,但总是不够完美。例如下面的代码:

int ary[5];
memset(ary, 0, sizeof(ary));
unsigned int i = 0;
while(i<sizeof(ary)/sizeof(ary[0])){
   ary[i] = i;
   i++;
}

对于元素的个数通过sizeof计算数组中元素的个数,是否越界,就只能靠程序员自己来保证了。

array容器

C++11中引入了array容器,基本上解决了内置数组的问题:

std::array<int, 5> c11ary;
c11ary.fill(0);
unsigned int i = 0;
while(i<c11ary.size()){
   c11ary.at(i) = i;
   i++;
}


这段代码中,

  1. 使用fill方法实现了数据填充。

  2. 使用size方法取得数组的大小。

  3. 虽然at(i)方法实现带有越界检查的读写。

没有免费的误餐

为了了解array容器的性能,我们编写下面的代码来测试写入效率:

DWORD begin = GetTickCount();
std::array<int, 10000> ary;
//int ary[10000];
//std::vector<int> ary(10000,0);
std::cout << sizeof(ary) << std::endl;
for(int s = 0; s < 10000; s++){
   for(int i = 0; i < 10000; i++){
       ary[i] = s + i;
   }
}
DWORD end = GetTickCount();
std::cout << end - begin << std::endl;

代码分别使用array容器,内置数组,vector容器进行了确认,结果如下:

首先是占用空间的比较结果:array容器和内置数组占用相同的内存空间,vector只有12Byte,真正用于保存数据的内容应该是从堆中获取的。

写入速度的比较结果:内置数组的速度最快,vector容器次之,array容器最慢。

但从array和内置数组的比较结果来讲,牺牲了一些性能,换来了安全和便利。但是vector的效率超过array,让人很意外。

“C++11的array容器怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI