vector 怎么删除符合条件的元素
时间: 2024-04-29 14:20:48 浏览: 40
可以使用erase-remove idiom来删除vector中符合条件的元素。
具体的做法是先使用标准库的remove算法将符合条件的元素移到vector末尾,然后再使用erase方法删除末尾的符合条件的元素。
例如,将vector中所有等于5的元素删除,可以如下实现:
```
std::vector<int> vec = {1, 5, 2, 5, 3, 5};
vec.erase(std::remove(vec.begin(), vec.end(), 5), vec.end());
```
这样,vec就变成了{1, 2, 3},所有值为5的元素都被删除了。
相关问题
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()` 函数删除这些元素。
vector列表erase删除第一个元素
在C++标准库中的`std::vector`容器中,如果你想删除第一个元素(即索引为0的元素),可以使用`erase`函数。这个函数有两种形式:
1. `erase(pos)`:直接指定要删除的元素位置,这里就是`pos = 0`。例如:
```cpp
std::vector<int> vec;
// 填充数据...
vec.erase(vec.begin()); // 删除第一个元素
```
2. `erase(remove(pred), container.end())`:如果需要删除满足某个条件的所有元素,你可以提供一个谓词`pred`。在这种情况下,你需要先调用`remove`函数,它会移动所有符合条件的元素到容器的末尾,然后`erase`操作从`container.end()`开始到新移动的位置结束,会自动删除所有移动过的元素。但是,如果你只想删除第一个匹配项,通常还是直接用第一种方法。
注意在删除元素之后,`vector`的大小会减一,并且剩余元素的下标可能会改变。因此,在删除元素后,可能需要更新对后续元素的引用。此外,`erase`操作不会返回被删除的元素,因为`vector`内部已经进行了调整。