vector怎么添加元素

定义一个vector<int> v;怎么向其中添加无序数组。比如要添加一组数0,1,3,5,6,4,2,……个数确定,数却没有顺序。除了多次调用push_back()之外还有别的高效的方法吗?因为当数的个数多的时候调用puh_back()显然效率不高。

你可以从数组构造
比如int a[] = { 0,1,3,5,6,4,2.... };
vector<int> v( a, a + sizeof( a ) / sizeof( a[0] ) );

动态添加就只有用push_back了

楼下说的对,我都快忘了。可以用resize预置vector的容量,这样就能免除push_back由于空间超过默认分配的定量内存时而重分配更大的一块新空间并把原内容重新拷过去所带来的效率损失,vector内部自动维护了一块定量的内存,这个空间可以用capacity()方法查看。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-04-11
你可以从数组构造
比如int a[] = { 0,1,3,5,6,4,2.... };
vector<int> v( a, a + sizeof( a ) / sizeof( a[0] ) );

动态添加就只有用push_back了

可以用resize预置vector的容量,这样就能免除push_back由于空间超过默认分配的定量内存时而重分配更大的一块新空间并把原内容重新拷过去所带来的效率损失,vector内部自动维护了一块定量的内存,这个空间可以用capacity()方法查看。本回答被网友采纳
第2个回答  2014-03-13
续LS所说,也可以用resize(),比如v.resize(10),数组大小就变成了10,push_back的效率是不高,因为中间会有拓展2倍大小的过程.
相似回答