C++中数组转vector和vector的下标访问效率有区别吗

下次自动登录
现在的位置:
& 综合 & 正文
c++之Vector容器数据两种取值方法(指针访问,数组下标访问)
vector 是一个类模板(class template)。使用模板可以编写一个类定义或函数定义,而用于多个不同的数据类型。因此,我们可以定义保存 string 对象的 vector,或保存 int 值的 vector,又或是保存自定义的类类型对象(如Sales_items 对象)的 vector。vector 不是一种数据类型,而只是一个类模板,可用来定义任意多种数据类型。vector 类型的每一种都指定了其保存元素的类型[2]。
vector之所以被认为是一个,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的,能够增加和压缩数据。
指针访问,数组下标访问
for (vector&int&::iterator iter = cliqueFormationVO.rolePosition.begin(); iter != cliqueFormationVO.rolePosition.end(); iter++)
CCLOG("iter: %d",*iter);
CCLOG("*************");
position = *
if (position != 0)
char ch[11];
sprintf(ch,"%d",position);
CCLOG("ch: %s",ch);
JsonBox::V
role = formation["data"]["role"][ch];
printf("输出角色信息\n");
cout&&role&&
for (int i=0;i& (int)cliqueFormationVO.rolePosition.size();i++)
position = cliqueFormationVO.rolePosition[i];
//position = test[i];
CCLOG("position: %d",position);
printf("position: %d\n",position);
/*if (temp != 0)
char ch[11];
sprintf(ch,"%d",temp);
JsonBox::V
role = formation["data"]["role"][ch];
printf("输出角色信息\n");
cout&&role&&
【上篇】【下篇】xuhss.com 路径制的在线新IT大学。
C++ 数组array与vector的比较
更多精彩图形学视频教程,请访问 http://www.oxox.work/
1:array 定义后的空间是固定的了,不能改变;而vector 要灵活得多,可再加或减.2:array 定义的时候必须定义数组的元素个数;而vector 不需要;且只能包含整型字面值常量,枚举常量或者用常量表达式初始化的整型const对
象,非const变量以及需要到运行阶段才知道其值的const变量都不能用来定义数组的维度.3: 数组和vector不同,一个数组不能用另一个数组初始化,也不能将一个数组赋值给另一个数组;
vector有一系列的函数操作,非常方便使用.和vector不同,数组不提供 push——back或者其他的操作在数组中添加新元素,数组一经定义就不
允许添加新元素;
若需要则要充许分配新的内存空间,再将员数组的元素赋值到新的内存空间。
STL的vector与MFC的CArray哪个速度更快?
STL学习笔记1(CArray与vector)
没有更多推荐了,C++中数组,链表和vector等容器之间的区别_百度知道
C++中数组,链表和vector等容器之间的区别
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
蓝笔小心的故事知道合伙人
蓝笔小心的故事
采纳数:210
获赞数:185
C++ STL 提供了3个序列容器 :vector, deque, listvector 中的元素是顺序存放的,所以随机访问很快,但是要插入和删除,这个时间复杂度就很高了,vector初始化时有一个capacity,如果元素个数超出capacity,那vector就会重新分配一个新的空间,并把旧值复制到新的空间中,释法原空间,这个也要耗费很多时间,所以如果你知道元素的最大值,最好用reserve()函数初始最大空间,避免重新分配空间造成的时间。deque 几乎所有的操作都和vector一样,出了可以在头添加和删除,多了个push_front(), pop_front();list 是双链表,元素在内存中是分散的不连续的,它使用指针left,right,指向前一个元素和后一个元素。所以要删除和添加只要动动指针,所以很快,但是因为是不连续的所以要访问一个元素,你只能遍历序列。
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。c++ 的vector、array和数组的比较
在c++11中,STL中提拱了一个新的容器std::array,该容器在某些程度上替代了之前版本的std::vector的使用,更可以替代之前的自建数组的使用。那针对这三种不同的使用方式,先简单的做个比较:
1. 三者均可以使用下表运算符对元素进行操作,即vector和array都针对下标运算符[]进行了重载
2. 三者在内存的方面都使用连续内存,即在vector和array的底层存储结构均使用数组
1. vector属于变长容器,即可以根据数据的插入删除重新构建容器容量;但array和数组属于定长容量。
2. vector和array提供了更好的数据访问机制,即可以使用front和back以及at访问方式,使得访问更加安全。而数组只能通过下标访问,在程序的设计过程中,更容易引发访问 错误。
3. vector和array提供了更好的遍历机制,即有正向迭代器和反向迭代器两种
4. vector和array提供了size和判空的获取机制,而数组只能通过遍历或者通过额外的变量记录数组的size
5. vector和array提供了两个容器对象的内容交换,即swap的机制,而数组对于交换只能通过遍历的方式,逐个元素交换的方式使用
6. array提供了初始化所有成员的方法fill
7. vector提供了可以动态插入和删除元素的机制,而array和数组则无法做到,或者说array和数组需要完成该功能则需要自己实现完成
8. 由于vector的动态内存变化的机制,在插入和删除时,需要考虑迭代的是否失效的问题。
基于上面的比较,在使用的过程中,可以将那些vector或者map当成数组使用的方式解放出来,可以直接使用array;也可以将普通使用数组但对自己使用的过程中的安全存在质疑的代码用array解放出来。
C++内置数组和array的比较
vector与CArray的区别(一) -- 效率
c++中&array&的使用
vector&vector&int& &array
c++ Array的使用方法
C++11 array
C++11 array使用详解
数组引用:C++ 数组做参数 深入分析
【C++】学习笔记十三——数组的替代品
C/C++中数组的定义和使用
没有更多推荐了,vector和array有什么区别?大家编程的时候习惯用什么?【c++吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:304,459贴子:
vector和array有什么区别?大家编程的时候习惯用什么?收藏
学长跟我说编程尽量用vector,很多函数可以直接用很方便但是C++的入门书里都是用的数组和指针啊?根本没提vector和迭代器
都是?C++primer不是一上来就讲vector吗?
array 必须编译时确定长度.
是说std::array (c++11)还是内建数组?
数组很多stl算法可以直接用也可以自己写函数实现算法数组性能最好但数组的使用离不开指针,这个一般人容易出错容易 out_of_range现代c++提倡vector,方便 安全
ISO C N15706.7.6.2 Array declarators4 If the size is not present, the array type is an incomplete type. If the size is * instead ofbeing an expression, the array type is a variable length array type of unspecified size,which can only be used in declarations or type names with func143)such arrays are nonetheless complete types. If the size is an integer constant expressionand the element type has a known constant size, the array type is not a variable length otherwise, the array type is a variable length array type. (Variable lengtharrays are a conditional feature that implementati see 6.10.8.3.)5 If the size is an expression that is not an integer constant expression: if it occurs in adeclaration at function prototype scope, it is treated as if it were replaced by *; otherwise,each time it is evaluated it shall have a value greater than zero. The size of each instanceof a variable length array type does not change during its lifetime. Where a sizeexpression is part of the operand of a sizeof operator and changing the value of thesize expression would not affect the result of the operator, it is unspecified whether or notthe size expression is evaluated.
一个动态一个静态,各有各的用途吧但是C++的入门书里都是用的数组和指针啊?根本没提vector和迭代器说了是入门书,一开始说得太多怕你吃不消
array容量固定。vector自动扩容。
我一向都是能用STL就尽量用。。
数组党飘过…不过为了节约空间一般都动态分配
登录百度帐号

我要回帖

更多关于 数组转vector 的文章

 

随机推荐