容器vector的常用操作

本文详细介绍了C++中vector容器删除元素的三种方法:pop_back移除最后一个元素,erase通过迭代器删除指定位置元素,以及remove配合erase移除所有指定值元素。同时,还对比了添加新元素的不同方式:push_back,emplace_back,insert和emplace的用法和效率。
摘要由CSDN通过智能技术生成

1 C++中vector 删除元素的方法: pop_back;  erase; std::remove;

a. 例如有数组容器V, 那么V.pop_back()会删除最后一个元素,该操作会改变V的size,即是真正的删除;

b. V.erase(iterator) ,需要输入删除位置的迭代器,删除后,后面的位置的值前移,即删除后迭代器指向的值是被删元素后面的那个值。erase也是真正的删除。

V.erase(iterator1, iterato2), 这个语句则会删除 [(iterator1, iterato2) 区间的所有元素。

c. remove是STL的库函数,但需要删除这个vector中所有指定值的元素时,可以用它。它可以用来删vector里面所有指定值,例如

it_new = std::remove(V.begin(), V.end(), 3); 它会删除V中从[ V.begin(), V.end() )间所有的3. 

但它不是真正的删除,只是把3 都挪到了数组的最后面,所以一般与erase配合使用来实现真正的删除:

it_new = std::remove(V.begin(), V.end(), 3);

V.erase(it_new, V.end());

2 C++中添加新元素的方法:push_back(),emplace_back(). insert(), emplace(),

a.  push_back() 和 emplace_back() 都是在容器末端添加一个新的元素.

     例如有vector V, V.push_back(1); V.emplace_back(1) 都是在 V的末端添加1。由于emplace_back时C++11引入的,效率更高。如果不用考虑兼容以前的版本,优先使用emplace_back();

b. insert() 

inser()方法的语法如下,可见inser()一次可以可以插入单个元素;也可以一次插入多个相同元素,甚至可以将别的容器里面的耨个序列插入进来。 所以如果需要需要插入多个元素时,选用insert()方法; 

但是如果只是需要插入一个元素,优先使用下面的emplace()方法。

语法格式用法说明
iterator insert(pos,elem)在迭代器 pos 指定的位置之前插入一个新元素elem,并返回表示新插入元素位置的迭代器。
iterator insert(pos,n,elem)在迭代器 pos 指定的位置之前插入 n 个元素 elem,并返回表示第一个新插入元素位置的迭代器。
iterator insert(pos,first,last) 在迭代器 pos 指定的位置之前,插入其他容器(不仅限于vector)中位于 [first,last) 区域的所有元素,并返回表示第一个新插入元素位置的迭代器。
iterator insert(pos,initlist)在迭代器 pos 指定的位置之前,插入初始化列表(用大括号{}括起来的多个元素,中间有逗号隔开)中所有的元素,并返回表示第一个新插入元素位置的迭代器。

c. emplace()

emplace()是C++11才引入的,它一次只能插入一个元素,它的效率要高于insert().因此优先考虑使用它。

emplace()的用法如下:

iterator emplace (const_iterator pos, args...);

例如 V.emplace(V.engin(), 8), 就是在V.begin()的前面插入8。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值