QUESTION! C++11 upperbound and lowerbound 用法

內容說明

語法常常讓人忘記,尤其是相似的語法更為容易,這裡告訴讀者這兩個用法差別,讓讀者在忘記時可以用到。

QUESTION! C++11 upperbound and lowerbound 用法

這兩個用法使用的是 binary serach 演算法,這裡有詳細的解釋可以看看。

upperbound 上限,傳回 index

傳回一個 index 為,選定的 \(value < element\) 並傳回第一個元素,其中 value 是我們想找的數值,element 則是陣列中的元素數值。

另一種講法則是,uppderbound 表示對於有序的陣列能夠最大於的數值。

舉例 1,2,3,3,3,4,5,如果我們要找 3 那 uppderbound 會傳回甚麼

此時會傳回 5,表示 index,那元素數值則是 4。

寫法如下

1
std::upper_bound (struct.begin(), struct.end(), value) - struct.begin();

lowerbound 下限,傳回 index

傳回一個 index 為,選定的 \(value \leq element\) 並傳回第一個元素,其中 value 是我們想找的數值,element 則是陣列中的元素數值。

另一種講法則是,lowerbound 表示對於有序的陣列能夠最大於的數值。

舉例 1,2,3,3,3,4,5,如果我們要找 3 那 lowerbound 會傳回甚麼

此時會傳回 2(表示 index),那元素數值則是 3,因為 3(要找的數值) 等於 3(陣列元素數值)。

寫法如下

1
std::lower_bound (struct.begin(), struct.end(), value) - struct.begin();

參考連結

lower_bound - cplusplus
C++ STL lower_bound upper_bound 的用法以及 cmp 函数 - AcmMissile
C++ STL 中的 lower_bound() 和 upper_bound() - Hanks-zyh

心得

有時候語言寫多常常會讓自己搞混很多語法,透過自己的 blog 紀錄才不會忘記的時候查到不是自己需要的資料,自己寫的比較能夠知道自己不會甚麼!

  • 版權聲明: 本部落格所有文章除有特別聲明外,均採用 Apache License 2.0 許可協議。轉載請註明出處!
  • © 2020-2024 John Doe
  • Powered by Hexo Theme Ayer
  • PV: UV: