請(qǐng)問(wèn) C++ map 的 lower_bound()函數(shù)怎么用?
2 回答

翻過(guò)高山走不出你
TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超3個(gè)贊
我們知道m(xù)ap容器是根據(jù)鍵值進(jìn)行排序的
lower_bound(k)返回一個(gè)迭代器,指向鍵不小于k的第一個(gè)元素
upper_bound(k)返回一個(gè)迭代器,指向鍵大于k的第一個(gè)元素
這兩個(gè)函數(shù)常用于multimap容器,用來(lái)獲取某個(gè)鍵對(duì)應(yīng)的所有元素
給你個(gè)程序:
12345678910111213141516171819202122232425 | #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)得到的迭代器,就是指向第一個(gè)鍵k對(duì)應(yīng)的第一個(gè)元素
upper_bound(k)得到的迭代器,就是指向大于鍵k的第一個(gè)元素

FFIVE
TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊
1234 | iterator lower_bound( const key_type& _Keyval) { // find leftmost node not less than _Keyval in mutable tree return (iterator(_Lbound(_Keyval), this )); } |
- 2 回答
- 0 關(guān)注
- 2459 瀏覽
添加回答
舉報(bào)
0/150
提交
取消