c++ - 即使边界键不存在,我也可以迭代 std::map 键范围吗?

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

我有一个 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::maplower_bound()upper_bound() 方法来定位最近值的迭代器给定的键。有关这些方法如何工作的文档,请参阅您的 C++ 书籍。

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

关于c++ - 即使边界键不存在,我也可以迭代 std::map 键范围吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39822833/

相关文章:

python - 为什么Python在循环后不删除iterate变量?

c++ - 抽象声明符 Node* 用作声明

c++ - 非返回 lambda,捕获作为函数指针

c++ - 无参数可变参数模板的模糊重载

c++ - `std::kill_dependency` 有什么作用,我为什么要使用它?

c++ - 几次比较怎么会比一些计算慢?

python - 在Python中跳过yield

Python:从嵌套迭代器组成列表

c++ - IDWriteFactory::CreateTextFormat() 失败

c++ - C++ 支持的类型的表达式语法是什么?