c++中 map里upper_bound和lower_bound分别怎么理解啊? 主要是想问关键字的上界和下界是什么意思。

 我来答
溪贝0号123
2020-04-11 · TA获得超过426个赞
知道答主
回答量:228
采纳率:100%
帮助的人:5.7万
展开全部

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)的迭代器

losicy
2011-04-01 · TA获得超过439个赞
知道小有建树答主
回答量:224
采纳率:0%
帮助的人:228万
展开全部
是一个有序的序列,使用upper_bound时候,返回你想要寻找区间中最大值的迭代器~~lower_bound相反~~~
追问
能继续详细说说不?谢谢啊
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ameng0605
2012-05-29
知道答主
回答量:12
采纳率:0%
帮助的人:11.9万
展开全部
// 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 ;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
李英珏
2011-04-01 · TA获得超过193个赞
知道小有建树答主
回答量:371
采纳率:100%
帮助的人:189万
展开全部
百科里不有吗
追问
就是不很明白关键字的上界和下界是什么意思啊
追答
看看相关的书呀 最好的办法就是编程验证一下就好了  希望对你有帮助
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式