使用迭代器获取映射中与条件匹配的每个项
Get every item matches the condition in a map with iterator
我想得到所有符合条件的项。到目前为止,我所能做的是代码迭代器,但我不知道如何继续下去。这是我的代码:
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
条件检验了该算法,它是有效的。
相关文章:
- 使用std::multimap迭代器创建std::list
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- C++中带有List类的迭代器Segfault
- 如何在c++迭代器类型中包装std::chrono
- 集合上的输出迭代器:assign和increment迭代器
- Boost Spirit,获取迭代器内部语义动作
- 对于set上的循环-获取next元素迭代器
- 为什么output_editor Concept不需要output_e迭代器标记
- c++17文件系统::recursive_directory迭代器()在mac上没有给出这样的目录,但在windows上
- 具有迭代器和自定义步长的循环结束条件
- 使用条件迭代器插入到向量中
- 迭代器 for 循环不会确认循环完成条件
- C++ 条件单向迭代器
- 有没有办法创建一个花哨的迭代器和相应的新数组,以便检查每个索引的索引值的条件?
- 如何在不使用循环或迭代器的情况下检查所有列表元素并在满足条件时删除一个
- 传入一个迭代器,该迭代器只迭代满足特定条件的元素
- 使用迭代器的矢量擦除特定索引(不基于范围或条件)
- C++算法在条件为真时推进迭代器
- 使用迭代器获取映射中与条件匹配的每个项
- 矢量迭代器在条件下擦除两个元素