upper_bound()与lower_bound()
2018-2-5
upper_bound 和lower_bound是STL中二分查找的函數(shù),所以效率會比較高。
首先,最形象的一句話:
upper_bound(i) 返回的是鍵值為i的元素可以插入的最后一個(gè)位置(上界),這里的上界就是說已經(jīng)是最大的了。
lowe_bound(i) 返回的是鍵值為i的元素可以插入的第一個(gè)位置(下界),這里的下界就是說已經(jīng)是最小的了。
怎么理解呢,舉例:
在升序的set里面
(1)set里沒有元素i的時(shí)候,兩個(gè)元素的返回值是一樣的,都是那個(gè)元素可以插入的位置:
1 2 4 5 這個(gè)序列,upp(3)和low(3)都返回位置2(下標(biāo))
(2)如果只有一個(gè)元素i,low返回那個(gè)元素的位置,而upp返回那個(gè)元素的位置的后一個(gè)位置:
1 2 4 5 這個(gè)序列upp(2)返回下標(biāo)2而low(2)返回下標(biāo)1
(3)多個(gè)元素i,low返回那個(gè)元素第一次出現(xiàn)的位置,upp返回那多個(gè)元素中的最后一個(gè)的后一個(gè)位置:
1 2 2 4 5 這個(gè)序列 upp(2)返回下標(biāo)3的位置,low(2)返回下標(biāo)1的位置
特別注意:舉例在一個(gè)升序的容器里,如果所有元素都大于i則,upp和low都返回begin。都小于i則返回end(越界了)。
最后再來一句,看是否好理解一些。
terator lower_bound( const key_type &key ): 返回一個(gè)迭代器,指向鍵值>= key的第一個(gè)元素。
iterator upper_bound( const key_type &key ):返回一個(gè)迭代器,指向鍵值<=key的最后一個(gè)元素的后一個(gè)元素。
降序排列的容器:
iterator lower_bound( const key_type &key ): 返回一個(gè)迭代器,指向鍵值<= key的第一個(gè)元素。
iterator upper_bound( const key_type &key ):返回一個(gè)迭代器,指向鍵值>=key的最后一個(gè)元素的后一個(gè)元素。
總結(jié)
以上是生活随笔為你收集整理的upper_bound()与lower_bound()的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python 判断字典是否有key,判断
- 下一篇: Nuget包制作最佳解决方案