c++中 map里upper_bound和lower_bound分别怎么理解啊? 主要是想问关键字的上界和下界是啥意思。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++中 map里upper_bound和lower_bound分别怎么理解啊? 主要是想问关键字的上界和下界是啥意思。相关的知识,希望对你有一定的参考价值。
m.lower_bound(键) 返回值指的是某个键的迭代器(若该键不存在,则返回挨着这个键的下一个键的迭代器), m.upperbound(键)的返回值是这个键(无论该键是否存在)都返回挨着这个键的下一个键的迭代器
在map里面 m.lower_bound(键) 就是大于或等于键值的第一个迭代器, m.lower_bound(键) 是大于键值的下一个迭代器。
比方说
(键1, 值2)
(键2, 值4)
(键4, 值9)
(键5, 值9)
若m.lower_bound(3) 由于有键3,所以的他值就是键3 的迭代器
m.lower_bound(3) 无论有没有键3,他都是键4的迭代器
再比如
(键1, 值2)
(键2, 值4)
(键4, 值9)
(键5, 值9)
若m.lower_bound(3) 由于没有键3,所以的他值就是键4 的迭代器
----------------------------------------------分割线--------------------------------
若是在multimap中
由于multimap的键值是可以重复的,同一个键对应多个值。
m.lower_bound 指的是某个键的第一个值的迭代器, upperbound指的是这个所有相同键的最后一个值的下一个值的迭代器;
比如
(键1, 值2)
(键2, 值4)
(键2, 值7)
(键2, 值8)
(键4, 值9)
(键5, 值9)
m.lower_bound(2)指的是 (键2, 值4)的迭代器。
而m.upperbound( 2 ) 指的是 (键4, 值9)的迭代器
参考技术A 是一个有序的序列,使用upper_bound时候,返回你想要寻找区间中最大值的迭代器~~lower_bound相反~~~追问能继续详细说说不?谢谢啊
参考技术B // map::lower_bound/upper_bound#include <iostream>
#include <map>
using namespace std;
int main(int argc, char** argv)
map<char,int> mymap;
map<char,int>::iterator it,itlow,itup,itt,ite;
mymap['a']=20;
// mymap['b']=40;
mymap['c']=60;
mymap['e']=70;
mymap['f']=80;
mymap['g']=100;
itlow=mymap.lower_bound ('b'); // itlow 指向c,不是a
itup=mymap.upper_bound ('d'); // itup 指向e,
itt = mymap.lower_bound("c");//itt指向c
ite = mymap.upper_bound("e");//ite指向f,不是e
return 0 ;
参考技术C 百科里不有吗追问
就是不很明白关键字的上界和下界是什么意思啊
追答看看相关的书呀 最好的办法就是编程验证一下就好了 希望对你有帮助
以上是关于c++中 map里upper_bound和lower_bound分别怎么理解啊? 主要是想问关键字的上界和下界是啥意思。的主要内容,如果未能解决你的问题,请参考以下文章
stl map中的lower_bound和 upper_bound
upper_bound()和lower_bound()操作,stl库
upper_bound()和lower_bound()操作,stl库