即使边界键不存在,我也可以遍历 std::map 键范围吗?
Can I iterate over an std::map key range even if the boundary keys don't exist?
我有一个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>
或者,是否有其他容器可以做到这一点?我不想使用向量,因为在我的程序中实际包含值的键之间可能存在很大的差距,并且我不想在只有少数项目时迭代数千个空索引,例如.
您可以使用 std::map
的 lower_bound()
和 upper_bound()
方法来定位给定键的最近值的迭代器。有关这些方法如何工作的文档,请参阅您的 C++ 书籍。
获得最近键的迭代器后,您可以像往常一样迭代。
我有一个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>
或者,是否有其他容器可以做到这一点?我不想使用向量,因为在我的程序中实际包含值的键之间可能存在很大的差距,并且我不想在只有少数项目时迭代数千个空索引,例如.
您可以使用 std::map
的 lower_bound()
和 upper_bound()
方法来定位给定键的最近值的迭代器。有关这些方法如何工作的文档,请参阅您的 C++ 书籍。
获得最近键的迭代器后,您可以像往常一样迭代。