给出
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);
答案 0 :(得分:3)
尝试std::map
&#39; s lower_bound
。
它返回一个迭代器,指向第一个不小于给定键的元素。
答案 1 :(得分:1)
您正在寻找std :: map ..
提供的text = "hello guy";
操作
lower_bound/upper_bound
返回一个迭代器到容器中的第一个元素,其中的键被认为是在k之后,或者map :: end如果没有键被认为是在k之后。
upper_bound
返回容器中第一个元素的迭代器,其中的键不被认为是在k之前,或者map :: end如果所有键都被认为是在k之前。
实际上,名称lower_bound和upper_bound在数学上与其名称所暗示的不同。