我想得到所有符合条件的项。到目前为止,我所能做的是代码迭代器,但我不知道如何继续下去。这是我的代码:
map<string, Device*>::iterator it;
it = find_if(
devicesMap.begin(),
devicesMap.end(),
[](Device* item)->bool{return item->Name() == ""; });
这个代码会得到第一个符合条件的项目,因为我在代码的另一部分使用它,但如果有多个,我怎么能在不浏览整个地图的情况下浏览所有项目?
最后,多亏了@Joachim,我以这种方式解决了这个问题:
copy_if(originalMap->begin(),
originalMap->end(),
inserter(auxMap, auxMap.end()),
[auxTimevar](std::pair<string, SnmpHwObject*> n)->bool
{
seconds sec = chrono::duration_cast<seconds>(n.second->TimeStamp());
return (rightNow - sec.count() >= TEN_SECONDS);
});
如果有人感兴趣,我会把它发布出来。我用一个简单的for
及其if
条件检验了该算法,它是有效的。