c++数组11的容器怎么使用

介绍

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

<强>内置数组

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

 <代码> int必要[5],
memset(必要0 sizeof(必要);
unsigned int i=0;
, (i,,必要[我]=我;
,,我+ +,
}

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

<强>阵列容器

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

 <代码> std:: array c11ary.fill (0); 
unsigned int i=0;
, (i,,c11ary.at (i)=我;
,,我+ +,
}


这段代码中,

<李>

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

<李>

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

<李>

虽然在(我)方法实现带有越界检查的读写。

<强>没有免费的误餐

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

 <代码> DWORD开始=GetTickCount (); 
std:: array//int ary [10000];
//std:: vector必要(10000 0);
std:: cout & lt; & lt;sizeof(必要)& lt; & lt;std:: endl;
(int s=0;s & lt;10000;+ +){
,,(int i=0;我& lt;10000;我+ +){
,,,,必要[我]=s +我。
,,}
}字
结束=GetTickCount ();
std:: cout & lt; & lt;结束,开始& lt; & lt;std:: endl;

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

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

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

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

c++数组11的容器怎么使用