0
我想獲取與條件匹配的所有項目。至於我能做的是代碼迭代器,但我不知道如何繼續下去。這是我的代碼:使用迭代器獲取每個項目與地圖中的條件匹配
map<string, Device*>::iterator it;
it = find_if(
devicesMap.begin(),
devicesMap.end(),
[](Device* item)->bool{return item->Name() == ""; });
此代碼將獲得的第一項條件相匹配,因爲我在代碼的其他部分使用它,但如果有一個以上的人,我怎麼可能去通過所有的他們沒有通過整個地圖?
首先,您需要詳細瞭解['find_if'](http://en.cppreference.com/w/cpp/algorithm/find_if),特別是謂詞函數的參數是什麼,因爲對於['std :: map'](http://en.cppreference.com/w/cpp/container/map)它是*不*你認爲它是。那麼對於你的問題,也許你可以使用['copy_if'](http://en.cppreference.com/w/cpp/algorithm/copy_if)複製到一個新的容器? –
在代碼的其他部分,我的意思是,我沒有在'std :: map'中使用'find_if',而是在'std :: list'中使用'find_if'。回答你的問題,不,我可以創建一個對象的副本,因爲我想修改它們。我想讓所有沒有名字的人寫下來。 – ars1614
那麼你可以把它們(使用'copy_if')放在一個*指針*的容器中去實際的對象。 –