我有一个 std::map<int, object>
.
如果 map 包含:
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
(假设 map 中实际上没有任何键 5 和 10)?我想使用这些值来获取输出,例如:
std::pair<6, obj3>
std::pair<8, obj3>
std::pair<9, obj3>
或者,是否有其他容器可以做到这一点?我不想使用 vector ,因为在我的程序中实际包含值的键之间可能存在很大的差距,并且我不想在只有少数项目时迭代数千个空索引,例如.
最佳答案
您可以使用 std::map
的 lower_bound()
和 upper_bound()
方法来定位最近值的迭代器给定的键。有关这些方法如何工作的文档,请参阅您的 C++ 书籍。
一旦获得最近键的迭代器,就可以像往常一样进行迭代。
关于c++ - 即使边界键不存在,我也可以迭代 std::map 键范围吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39822833/