這是來自C Primer(5th版);Ch 19. "附錄:演算法":
lower_bound(beg, end, val) lower_bound(beg, end, val, comp)回傳一個迭代器,表示
val不小于該元素的第一個元素,如果不存在這樣的元素,則回傳end。upper_bound(beg, end, val) upper_bound(beg, end, val, comp)回傳一個表示第一個元素的迭代器
。
- 但是我認為
lower_bound回傳一個迭代器,表示輸入序列中第一個不小于val(大于或等于val)的元素,而不是相反("...第一個元素,使val不小于該元素")。這是書中的一個錯誤嗎? 。
uj5u.com熱心網友回復:
這在書中是一個錯誤嗎?
如果你相信cppreference,那么。是的,這是一個錯誤:
std::lower_bound回傳一個迭代器,指向
[first, last)范圍內第一個不小于(即大于或等于)值的元素,如果沒有找到這樣的元素,則指向最后一個。
或者,如果你不相信那個網站,這個C 17標準草案有:
28.7.3.1
lower_bound[lower.bound]...
2 回傳:在[first, last]范圍內最遠的迭代器i,使得對于[first, i)范圍內的每個迭代器j,以下相應條件成立。*j < value或者comp(*j, value) != false.
在這個(后來的)在線標準草案中,它是§25.8.4.2。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/308832.html
標籤:
上一篇:如何理解leecode中的遞回?
