C++映射键/迭代器操作

C++ map key/iterator manipulation

本文关键字:迭代器 操作 映射 C++      更新时间:2023-10-16

给定

map<int,string>

例如,知道密钥可以是从0到1.000.000的值,但并不是所有的都设置好了,给定的密钥X有可能跳到最近的密钥/迭代器吗?我基本上是在寻找一种方法,在不必迭代所有键的情况下找到最接近的值。

示例:

map<int,string> dict;
dict.insert(pair<int,string>(1,"smth"));
dict.insert(pair<int,string>(2,"smth"));
dict.insert(pair<int,string>(100,"smth"));
dict.insert(pair<int,string>(1000,"smth"));
dict.insert(pair<int,string>(7777,"smth"));
dict.insert(pair<int,string>(9999,"smth"));
//this should jump to key/value <7777,"smth">
get_magic_match(5000,dict);

尝试std::maplower_bound

它返回一个迭代器,指向不小于给定键的第一个元素。

您正在寻找std::map提供的lower_bound/upper_bound操作。。

upper_bound向容器中的第一个元素返回迭代器,该元素的键被认为在k之后,或者如果没有键被认为是在k之后则映射::end。

lower_bound将迭代器返回到容器中第一个元素,该元素的键不被认为在k之前,或者如果所有键都被认为在k之前,则映射::end。

实际上,lower_bound和upper_bound的名称在数学上与它们的名称不同步。

的下限和上限