簡體   English   中英

不應該 lower_bound 返回一個指向 end() 的迭代器嗎?

[英]Shouldn't lower_bound return an iterator pointing to end()?

我試圖更好地理解lower_bound 我有以下代碼:

#include <algorithm>
#include <iostream>
#include <vector>
 
int main()
{
    std::vector<int> data = { -1,0,3,5,9,12 };
 
        auto lower = std::lower_bound(data.begin(), data.end(), -2);
 
        if (lower != data.end())
            std::cout << *lower << " at index " << std::distance(data.begin(), lower);
        else
            std::cout << "not found";
        std::cout << '\n';
}

請注意,這只是從 cppreference.com 修改的示例代碼。 根據那里的文檔:

返回一個迭代器,該迭代器指向范圍 [first, last) 中不小於(即大於或等於)值的第一個元素,如果沒有找到這樣的元素,則返回 last

鑒於我正在尋找的元素-2不存在於矢量data中,我希望lower_bound設置為lower==data.end() 但是,我得到的是:

-1 在索引 0

反而。 有人可以解釋為什么嗎?

非常感謝!

記住std::lower_bound如何工作的最簡單方法是,它將一個迭代器返回到應該插入項目的位置以保留排序順序。 在您的情況下,這將是序列的開始。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM