请问 C++ map 的 lower_bound()函数怎么用?

 我来答
龍__鳳
推荐于2017-09-05 · TA获得超过2346个赞
知道小有建树答主
回答量:948
采纳率:0%
帮助的人:1385万
展开全部

我们知道map容器是根据键值进行排序的

lower_bound(k)返回一个迭代器,指向键不小于k的第一个元素

upper_bound(k)返回一个迭代器,指向键大于k的第一个元素

这两个函数常用于multimap容器,用来获取某个键对应的所有元素

给你个程序:

#pragma warning (disable:4786)
#include<iostream>
#include<string>
#include<map>
using namespace std;
int main()
{
multimap<string,int> m;
m.insert(make_pair((string)"China",1));
m.insert(make_pair((string)"China",2));
m.insert(make_pair((string)"China",3));
m.insert(make_pair((string)"English",1));
m.insert(make_pair((string)"English",2));
multimap<string,int>::iterator it = m.begin();
while(it != m.end())
{
cout<<it->first<<" "<<it->second<<endl;
it++;
}
cout<<endl;
multimap<string,int>::iterator it1 = m.lower_bound("China"),it2 = m.upper_bound("China");
cout<<it1->first<<" "<<it1->second<<endl;
cout<<it2->first<<" "<<it2->second<<endl;
return 0;
}

晓得了么,lower_bound(k)得到的迭代器,就是指向第一个键k对应的第一个元素

upper_bound(k)得到的迭代器,就是指向大于键k的第一个元素

溪贝0号123
2020-04-11 · TA获得超过426个赞
知道答主
回答量:228
采纳率:100%
帮助的人:5.4万
展开全部
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)的迭代器
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-06-01
展开全部
	iterator lower_bound(const key_type& _Keyval)
{ // find leftmost node not less than _Keyval in mutable tree
return (iterator(_Lbound(_Keyval), this));
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式