编写一段代码,使用迭代器将该向量中的所有奇数元素删除,请在删除后输出剩余元素,使用迭代器遍历并修改向量,不能使用std::remove_if或其他算法函数
时间: 2024-09-19 20:08:30 浏览: 29
vector list map 遍历删除制定元素 防止迭代器失效的实例
如果你不能使用`std::remove_if`等现成的算法函数,我们可以手动创建一个新的迭代器来遍历并删除奇数。这里是一个简单的C++示例,使用了两个指针,一个指向原始向量的开始,另一个指向当前处理的位置:
```cpp
#include <iostream>
#include <vector>
void remove_odd_elements(std::vector<int>& vec) {
if (vec.empty()) {
return;
}
// 创建两个指针,一个指向原数组,一个指向奇数之后
auto it = vec.begin();
auto end = vec.end();
while (it != end) {
if (*it % 2 != 0) { // 如果找到奇数
it = vec.erase(it); // 移除它,并更新它到下一个元素
} else { // 否则继续前进
++it; // 遍历下一个元素
}
}
}
int main() {
std::vector<int> v = {1, 2, 3, 4, 5, 6, 7, 8, 9};
remove_odd_elements(v);
// 输出剩余元素
for (const auto& num : v) {
std::cout << num << " ";
}
std::cout << "\n";
return 0;
}
阅读全文