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

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


回首忆惘然
浏览 2398回答 2
2回答

翻过高山走不出你

我们知道map容器是根据键值进行排序的lower_bound(k)返回一个迭代器,指向键不小于k的第一个元素upper_bound(k)返回一个迭代器,指向键大于k的第一个元素这两个函数常用于multimap容器,用来获取某个键对应的所有元素给你个程序:12345678910111213141516171819202122232425#pragma&nbsp;warning&nbsp;(disable:4786)#include<iostream>#include<string>#include<map>using&nbsp;namespace&nbsp;std;int&nbsp;main(){&nbsp;&nbsp;&nbsp;&nbsp;multimap<string,int>&nbsp;m;&nbsp;&nbsp;&nbsp;&nbsp;m.insert(make_pair((string)"China",1));&nbsp;&nbsp;&nbsp;&nbsp;m.insert(make_pair((string)"China",2));&nbsp;&nbsp;&nbsp;&nbsp;m.insert(make_pair((string)"China",3));&nbsp;&nbsp;&nbsp;&nbsp;m.insert(make_pair((string)"English",1));&nbsp;&nbsp;&nbsp;&nbsp;m.insert(make_pair((string)"English",2));&nbsp;&nbsp;&nbsp;&nbsp;multimap<string,int>::iterator&nbsp;it&nbsp;=&nbsp;m.begin();&nbsp;&nbsp;&nbsp;&nbsp;while(it&nbsp;!=&nbsp;m.end())&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout<<it->first<<"&nbsp;"<<it->second<<endl;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;it++;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;cout<<endl;&nbsp;&nbsp;&nbsp;&nbsp;multimap<string,int>::iterator&nbsp;it1&nbsp;=&nbsp;m.lower_bound("China"),it2&nbsp;=&nbsp;m.upper_bound("China");&nbsp;&nbsp;&nbsp;&nbsp;cout<<it1->first<<"&nbsp;"<<it1->second<<endl;&nbsp;&nbsp;&nbsp;&nbsp;cout<<it2->first<<"&nbsp;"<<it2->second<<endl;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;}晓得了么,lower_bound(k)得到的迭代器,就是指向第一个键k对应的第一个元素upper_bound(k)得到的迭代器,就是指向大于键k的第一个元素

FFIVE

1234iterator&nbsp;lower_bound(const&nbsp;key_type&&nbsp;_Keyval)&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;//&nbsp;find&nbsp;leftmost&nbsp;node&nbsp;not&nbsp;less&nbsp;than&nbsp;_Keyval&nbsp;in&nbsp;mutable&nbsp;tree&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(iterator(_Lbound(_Keyval),&nbsp;this));&nbsp;&nbsp;&nbsp;&nbsp;}
打开App,查看更多内容
随时随地看视频慕课网APP