c++遍历一个vector满足条件就把vector里面的元素删除
时间: 2023-10-22 15:18:35 浏览: 167
可以使用STL中的`remove_if`函数和`erase`函数来实现:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool isEven(int n){
return n % 2 == 0;
}
int main(){
vector<int> nums = {1, 2, 3, 4, 5, 6, 7, 8, 9};
nums.erase(remove_if(nums.begin(), nums.end(), isEven), nums.end());
for(int num : nums){
cout << num << " ";
}
return 0;
}
```
以上代码中,`isEven`函数用来判断一个数是否为偶数。`remove_if`函数会将满足条件的元素移动到vector的末尾,并返回指向第一个被移动元素的迭代器。`erase`函数将指定范围内的元素删除。
运行结果为:
```
1 3 5 7 9
```
相关问题
C++遍历vector<vector<int>>数组
在C++中,遍历二维向量`std::vector<std::vector<int>>`通常有两种方式:嵌套循环或者利用范围for循环。
1. **嵌套循环**:
```cpp
std::vector<std::vector<int>> matrix = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
// 使用两个嵌套循环遍历
for (int i = 0; i < matrix.size(); ++i) {
for (int j = 0; j < matrix[i].size(); ++j) {
std::cout << matrix[i][j] << " ";
}
std::cout << "\n"; // 每行结束后换行
}
```
2. **范围for循环**:
从C++11开始,你可以使用范围for循环,但这只适用于支持迭代器的容器。对于二维向量,需要先获取内部向量的起始和结束迭代器:
```cpp
for (const auto& row : matrix) {
for (int element : row) {
std::cout << element << " ";
}
std::cout << "\n";
}
```
这里假设`row`是`matrix`中的每个元素,即一个一维向量。
c++ 遍历vector的元素
遍历vector的元素可以使用循环结构,例如使用for循环或者迭代器来实现。下面是两种常见的遍历vector的方法:
1. 使用for循环遍历vector的元素:
```cpp
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
// 使用for循环遍历vector的元素
for (int i = 0; i < vec.size(); i++) {
std::cout << vec[i] << " ";
}
std::cout << std::endl;
return 0;
}
```
2. 使用迭代器遍历vector的元素:
```cpp
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
// 使用迭代器遍历vector的元素
for (std::vector<int>::iterator it = vec.begin(); it != vec.end(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
return 0;
}
```
阅读全文