在迭代过程中,您不能直接从std::list
中删除元素。这是因为std::list
的迭代器在删除元素时会失效。为了在迭代过程中删除元素,您需要使用std::remove_if
算法和std::list
的特定方法。
以下是一个示例,展示了如何在迭代std::list
时删除元素:
#include<iostream>
#include <list>
#include<algorithm>
int main() {
std::list<int> my_list = {1, 2, 3, 4, 5};
// 使用 std::remove_if 和 std::list::erase 删除元素
my_list.erase(std::remove_if(my_list.begin(), my_list.end(), [](int value) {
return value == 3;
}), my_list.end());
// 输出剩余元素
for (int value : my_list) {
std::cout<< value << " ";
}
return 0;
}
在这个示例中,我们使用std::remove_if
算法将值为3的元素移动到列表的末尾,并使用std::list::erase
方法删除这些元素。这样,在迭代过程中就可以安全地删除元素。
领取专属 10元无门槛券
手把手带您无忧上云