0
這與Can you remove elements from a std::list while iterating through it?不相似。我的是一個不同的場景。迭代時從stl列表中刪除多個元素
可以說我有這樣的列表。
1 2 3 1 2 2 1 3
我想在這樣的方式 當我第一次遇到一個元素X我做一些活動,然後我需要刪除所有的元素X在該列表中,並繼續迭代來遍歷這個STL列表。什麼是在C++中這樣做的有效方法。
我很擔心,當我做一個刪除或擦除我會無效的迭代器。如果它只有一個元素,那麼我可能會增加迭代器然後擦除。但在我的情況下,我需要刪除/刪除所有的發生。
當時想這樣的
while (!list.empty()) {
int num = list.front();
// Do some activity and if successfull
list.remove(num);
}
不知道這是否是最好的。
@dwcanillas這可以使未知的迭代器集失效。 – PSIAlt
@PSIA不好意思,我以爲我們在談論矢量,而不是列表。 – dwcanillas
是否需要在迭代時刪除或者可以在迭代之前修改列表?在後一種情況下,可以使用'list :: unique'來僅保留基本上所需的唯一元素。 – lmNt