2
有各種各樣的occations需要迭代C++容器時進行修改。通過C++容器迭代進行修改的一般解決方案?
就像回調存儲在std::list
中時一樣,當迭代並調用這些回調時,可能需要修改std::list
。
但是這不是安全的,這種問題是否有任何通用的解決方案?
有各種各樣的occations需要迭代C++容器時進行修改。通過C++容器迭代進行修改的一般解決方案?
就像回調存儲在std::list
中時一樣,當迭代並調用這些回調時,可能需要修改std::list
。
但是這不是安全的,這種問題是否有任何通用的解決方案?
有時我需要在迭代時從容器中移除項目。 與c + + 11(擦除返回下一個迭代器),你可以做這樣的代碼。
std::vector<MyClass> vector;
std::vector<MyClass>::iterator it;
for(it=vector.begin();it!=vector.end();)
{
if(it->removeFromList())
{
it=vector.erase(it);
}
else
{
it->doSomething();
++it;
}
}
如何準確地編輯容器?
這不是'for'循環的目的,使用'while'循環來實現這一點。用空格縮進你的代碼。 – Stargateur
爲了在迭代過程中容器是可修改的,它需要被稱爲stable。 http://stackoverflow.com/questions/16709828/how-to-check-whether-a-container-is-stable – Lanting
顯示你的代碼,我們可以幫你做到這一點。你的問題似乎是XY問題。 – Stargateur