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

时间:2015-11-15 02:15:43

标签: c++ dictionary

给出

  

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);

2 个答案:

答案 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在数学上与其名称所暗示的不同。

lower and upper bound