如何高效的从 std::vector 中 删除子集 std::vector
时间: 2023-12-14 20:04:26 浏览: 115
avr-libstdcpp:AVR 目标的 C++ 标准库的子集
要效地从std::vector中删除子集std::vector,你可以使用erase-remove idiom。这种方法结合了erase函数和std::remove算法来实现。具体步骤如下:
1. 使用std::remove算法将要删除的子集移动到向量的末尾。
2. 使用erase函数从向量中删除子集的位置开始到向量的末尾的所有元素。
下面是一个示例代码:
```cpp
std::vector<int> vec = {1, 2, 3, 4, 5, 6, 7, 8, 9};
std::vector<int> subset = {2, 4, 6};
vec.erase(std::remove(vec.begin(), vec.end(), subset.begin()), vec.end());
```
在上面的示例中,subset是要删除的子集,我们首先使用std::remove算法将subset中的元素移到了向量的末尾,然后使用erase函数从vec中删除这些元素。
阅读全文