不关心元素顺序时高效删除元素
如果在删除元素时不关心std::vector中元素的顺序,可以使用swap+pop_back删除元素,这样交换和删除相比erase删除元素快速很多
❯C++
#include <vector>
#include <algorithm>
#include <iostream>
int main() {
std::vector<int> vec{1,2,3,4,5,6,7};
std::for_each(vec.begin(), vec.end(), [](const auto& it){std::cout << it << " ";}); // 1 2 3 4 5 6 7
auto it = std::find(vec.begin(), vec.end(), 5);
if (it != vec.end()){
std::swap(*it, vec.back());
vec.pop_back();
}
std::cout << std::endl;
std::for_each(vec.begin(), vec.end(), [](auto& it){std::cout << it << " ";}); // 1 2 3 4 7 6
}