需求

cpp 对容器的插入和删除操作

解决

insert & emplace

  • insert 插入时,会先调用构造函数,再调用移动构造函数。
  • emplace 插入时,只调用构造函数。

emplace 直接在容器的指定位置调用构造函数,省略了移动构造函数,效率会更高一些,推荐使用 emplace.

erase

erase 一般是需要先获取迭代器,然后再删除。

vector<int>::iterator it;

it = myvector.begin();
myvector.erase(it);
// finding the position of the element in the vector
int valueToBeDeleted = 3;
auto it = find(vector.begin(), vector.end(),
	     valueToBeDeleted);

if (it != vector.end()) {
    vector.erase(it);
}
vector<int>::iterator it1, it2;

it1 = myvector.begin();
it2 = myvector.end();
it2--;
it2--;

myvector.erase(it1, it2);

clear

直接清空所有元素

参考