【问题标题】:Can I iterate over an std::map key range even if the boundary keys don't exist?即使边界键不存在,我是否可以遍历 std::map 键范围?
【发布时间】:2017-02-10 21:07:36
【问题描述】:

我有一个std::map<int, object>

如果地图包含:

std::pair<1, obj1>
std::pair<3, obj2>
std::pair<4, obj3>
std::pair<6, obj4>
std::pair<8, obj5>
std::pair<9, obj6>
std::pair<14, obj7>

我可以从不存在的键中遍历此映射,例如 i=5..10(假设映射中实际上没有键 5 和 10)?我想使用这样的值来获取输出,例如:

std::pair<6, obj3>
std::pair<8, obj3>
std::pair<9, obj3>

或者,是否有其他容器可以做到这一点?我不想使用向量,因为在我的程序中,实际上包含值的键之间可能存在很大的间隙,并且我不想在只有几个项目时遍历数千个空索引,例如.

【问题讨论】:

  • 你想要 lower_bound

标签: c++ c++11 iterator c++14 stdmap


【解决方案1】:

您可以使用std::maplower_bound()upper_bound() 方法来定位给定键的最接近值的迭代器。有关这些方法如何工作的文档,请查阅您的 C++ 书籍。

获得最近键的迭代器后,就可以像往常一样进行迭代了。

【讨论】:

  • 谢谢!这正是我需要知道的。我应该检查一下 std::map 方法。
猜你喜欢
  • 2020-03-15
  • 1970-01-01
  • 1970-01-01
  • 2012-01-03
  • 2010-12-23
  • 2019-10-04
  • 1970-01-01
  • 2017-04-27
  • 2021-04-06
相关资源
最近更新 更多