//vector 删除元素方式
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main(int argc, char const *argv[])
{
vector<int> vec;
for (int i = 0; i < 10; i++)
{
vec.emplace_back(i);
}
//第一种 删除5元素
// auto it = std::find(vec.begin(), vec.end(), 5);
// vec.erase(it);
// for_each(vec.begin(), vec.end(), [](int v){cout << v << endl;});
//第二种 删除5元素
// vec.erase(vec.begin()+5);
// for_each(vec.begin(), vec.end(), [](int v) { cout << v << endl; });
//第三种 删除5元素
// for(auto it = vec.begin(); it != vec.end();)
// {
// if(*it == 5)
// {
// vec.erase(it++);
// }
// else
// {
// it++;
// }
// }
// for_each(vec.begin(), vec.end(), [](int v) { cout << v << endl; });
//第四种 删除5元素
vec.emplace_back(5);
vec.emplace_back(5);
auto it = std::find(vec.begin(), vec.end(), 5);
while (it != vec.end())
{
it = vec.erase(it);
it = std::find(it, vec.end(), 5);
}
for_each(vec.begin(), vec.end(), [](int v) { cout << v << endl; });
return 0;
}
第四种是删除多个重复元素最好的方法。
正确释放一个vector方式
std::vector<int> tmp;
vec.swap(tmp);
cout << vec.capacity() << endl;