使用迭代器

时间:2016-01-14 10:27:18

标签: c++ dictionary lambda iterator

我想获得符合条件的所有物品。到目前为止,我能够做的是代码解析器,但我不知道如何继续前进。这是我的代码:

map<string, Device*>::iterator it;
    it = find_if(
        devicesMap.begin(),
        devicesMap.end(),
        [](Device* item)->bool{return item->Name() == ""; });

这段代码会让第一个项目符合条件,因为我在代码的另一部分使用它,但是如果有多个,我怎么能在不通过整个地图的情况下浏览所有这些?

1 个答案:

答案 0 :(得分:0)

最后,我以这种方式感谢@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条件是有效的。