所在的位置: C++ >> C++市场 >> C11新特性21array容器

C11新特性21array容器

内置数组

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

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

array容器

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

这段代码中,

使用fill方法实现了数据填充使用size方法取得数组的大小虽然at(i)方法实现带有越界检查的读写。

没有免费的误餐

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

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

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

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

单从array和内置数组的比较结果来讲,使用完全相同的内存空间,换来了安全和便利,但是牺牲了一些性能。

有一点很让人以外,vector的效率超过了array。让人有些费解。

作者观点

只有充分理解工具的优缺点,才能结合实际情况,扬长避短,做出最佳的选择。




转载请注明:http://www.aierlanlan.com/rzdk/4554.html