C++ 遍历迭代器并删除元素:使用 erase() 函数实现条件删除
C++ 遍历迭代器并删除元素:使用 erase() 函数实现条件删除
在遍历迭代器的过程中,如果需要达到某个条件时删除元素,可以使用 'erase()' 函数结合迭代器来实现。
以下是一个示例代码,演示了如何在遍历 'std::vector' 的迭代器时,达到特定条件时删除元素:
#include <iostream>
#include <vector>
int main() {
std::vector<int> nums = {10, 20, 30, 40, 50};
// 遍历向量的迭代器并删除符合条件的元素
for (auto it = nums.begin(); it != nums.end();) {
if (*it > 30) {
it = nums.erase(it); // 删除符合条件的元素,并返回下一个元素的迭代器
} else {
++it; // 继续遍历下一个元素
}
}
// 打印剩余元素
std::cout << "Updated vector: ";
for (const auto& num : nums) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
在上述示例中,我们创建了一个 'std::vector
需要注意的是,当使用 'erase()' 函数删除元素后,被删除元素之后的元素会自动向前移动,容器的大小也会相应减小。在删除元素后,迭代器会指向删除后的下一个元素,所以不需要再进行自增操作。
希望以上示例代码能够解决你的问题!如果你还有其他关于迭代器或 C++ 的问题,请随时提问。
原文地址: https://www.cveoy.top/t/topic/Sg2 著作权归作者所有。请勿转载和采集!