編輯:這個問題是指專門爲std ::名單 - 堆棧溢出其他類似的問題涉及到std ::向量C++列表進行迭代和擦除
我使用C++和遇到問題從一個std刪除元素::列表,而迭代它。我有一個自定義類(「對象」這一問題的緣故),列表和我的代碼如下所示:
for(auto i : Objects)
if(i.EraseFlag == true)
{
i = Objects.erase(i);
}
,我發現了錯誤:「呼叫到std沒有匹配功能: :列表::擦除(對象&)'
我相信這是正確的方式(從C++ 11)迭代通過列表,刪除一個元素並返回一個迭代器,考慮刪除,但清楚我做錯了什麼。以前在使用矢量時,我會使用'Objects.erase(Objects.begin()+ i)',我是for循環中的一個整數,但考慮到列表的訪問需求,這不起作用。
幫助讚賞。
感謝
erase()將迭代器作爲其參數 –
您不應該在基於'for'循環的範圍內更改序列。 – PaulMcKenzie
*我相信這是正確的方式(從C++ 11開始)遍歷列表,擦除元素並返回考慮擦除的迭代器,* - 爲什麼要使用這種方法擦除這樣的事情擦除/刪除成語,不需要循環? – PaulMcKenzie