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