vector 怎么删除符合条件的元素
时间: 2024-04-30 15:23:58 浏览: 13
你好,关于你的问题,可以考虑使用 erase-remove idiom 来删除符合条件的元素,具体的实现可以参考下面的代码示例:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> v = {1, 2, 3, 4, 5};
// 使用 erase-remove idiom 删除所有的偶数
v.erase(std::remove_if(v.begin(), v.end(), [](int n){ return n % 2 == 0; }), v.end());
// 输出剩下的元素
for (auto i : v) {
std::cout << i << " ";
}
std::cout << std::endl;
return 0;
}
```
在这个代码示例中,我们首先定义了一个包含一些整数的 vector `v`,然后使用 `remove_if` 函数和一个 lambda 表达式来删除所有的偶数。最后,我们输出剩下的元素,即 1 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()` 函数删除这些元素。
如果多个元素符合find条件,返回哪个
当`find()`函数在容器中查找到多个符合条件的元素时,它只会返回找到的第一个元素的迭代器。如果要查找所有符合条件的元素,可以使用循环和逐个比较的方法来实现。
以下是一个查找所有符合条件元素的例子:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
int main()
{
std::vector<int> vec = {1, 2, 3, 2, 4, 2, 5};
int val = 2;
for (auto it = vec.begin(); it != vec.end(); ++it) {
if (*it == val) {
std::cout << "Found: " << *it << std::endl;
}
}
return 0;
}
```
输出结果为:
```
Found: 2
Found: 2
Found: 2
```
在这个例子中,我们使用了一个循环来遍历整个容器,并逐个比较元素是否符合条件。如果找到符合条件的元素,就打印出来。