vector 删除容器中某个元素
时间: 2023-09-28 14:13:56 浏览: 52
要从 vector 容器中删除特定元素,可以使用 `erase` 函数。`erase` 函数接受一个迭代器参数,指向要删除的元素。以下是一个示例:
```cpp
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
// 删除值为 3 的元素
for (auto it = vec.begin(); it != vec.end(); ++it) {
if (*it == 3) {
vec.erase(it);
break;
}
}
// 输出删除后的容器
for (auto num : vec) {
std::cout << num << " ";
}
return 0;
}
```
运行上述代码,输出为:`1 2 4 5`。这样就从 vector 容器中删除了值为 3 的元素。请注意,在使用 `erase` 函数删除元素后,迭代器会失效,所以需要及时退出循环或更新迭代器。如果要删除多个相同的元素,可以在循环中使用 `erase` 多次操作。
相关问题
查找删除vector容器中指定元素
要删除vector容器中的指定元素,你可以使用标准库中的erase-remove惯用法。这个方法结合了erase()函数和remove()算法,可以高效地删除指定元素。
下面是一个示例代码,演示如何删除vector容器中的指定元素:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5, 3, 6, 7, 3};
// 要删除的元素
int target = 3;
// 使用erase-remove惯用法删除指定元素
vec.erase(std::remove(vec.begin(), vec.end(), target), vec.end());
// 打印删除后的vector
for (auto num : vec) {
std::cout << num << " ";
}
return 0;
}
```
在上面的示例中,我们先定义一个包含一些整数的vector容器。然后指定要删除的目标元素为3。接下来,我们使用erase-remove惯用法来删除指定元素。最后,我们遍历并打印删除后的vector。
运行上述代码,将输出:1 2 4 5 6 7,即成功删除了所有值为3的元素。
请注意,这种方法适用于删除单个元素或多个相同值的元素。如果你想要删除满足某个条件的元素,则可以使用更复杂的谓词函数。此外,如果你需要删除多个不同值的元素,也可以多次调用erase-remove惯用法来处理。
cpp vector<string>删除某元素
要删除 `vector<string>` 中的某个元素,可以使用 `erase()` 函数。该函数接受一个迭代器参数,指向要删除的元素。例如,如果要删除第三个元素,可以这样做:
```cpp
vector<string> v{"foo", "bar", "baz", "qux"};
auto it = v.begin() + 2; // 第三个元素的迭代器
v.erase(it); // 删除第三个元素
```
也可以通过指定元素的值删除元素,使用 `remove()` 函数:
```cpp
vector<string> v{"foo", "bar", "baz", "qux"};
v.erase(std::remove(v.begin(), v.end(), "baz"), v.end()); // 删除值为 "baz" 的元素
```
这段代码使用了 STL 算法 `std::remove()`,该算法会将符合条件的元素移动到容器的末尾,然后返回一个迭代器,指向这些元素的起始位置。然后,`erase()` 函数删除这些元素。