C++映射键/迭代器操作
C++ map key/iterator manipulation
给定
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::map
的lower_bound
。
它返回一个迭代器,指向不小于给定键的第一个元素。
您正在寻找std::map提供的lower_bound/upper_bound
操作。。
upper_bound
向容器中的第一个元素返回迭代器,该元素的键被认为在k之后,或者如果没有键被认为是在k之后则映射::end。
lower_bound
将迭代器返回到容器中第一个元素,该元素的键不被认为在k之前,或者如果所有键都被认为在k之前,则映射::end。
实际上,lower_bound和upper_bound的名称在数学上与它们的名称不同步。
的下限和上限
相关文章:
- 迭代器的指针操作问题
- 标准上的 OMP 和并行操作::set<...>::迭代器
- 如何让迭代器使用赋值运算符对列表进行操作
- 将迭代器放置为临时范围时,非销钉 - 操作和错误
- STD ::向量迭代器类型和允许的操作
- 这个迭代器操作在 C++ 中是未定义的吗?
- C++:为什么输出迭代器不支持比较操作?
- 使用迭代器执行对象操作的函数
- std::反向使用反向迭代器,为什么不是无操作?
- C 迭代器操作未检查溢出
- C++列表迭代器如果列表更改则重新启动操作
- std::set::迭代器和std::set::const_iterator之间是否存在操作差异
- 单元测试时操作迭代器
- boost::精神访问从语义操作定位迭代器
- std::sort 如何仅使用迭代器实现交换操作
- 是否允许抛出标准迭代器操作
- C++映射键/迭代器操作
- c++中迭代器上的操作
- 迭代器操作不起作用
- 用于枚举图中所有节点值的假迭代器操作