簡體   English   中英

查找lower_bound的返回值

[英]finding the return value of the lower_bound

我正在嘗試使用Lower_bound來確定value是否在指向struct的指針向量內。 我在用

auto it = lower_bound( myVector.begin() , myVector.end() , value , comparer() );

比較器功能看起來像

struct comparer
{
    bool operator ()(Property * ms, int const i) const
    {
        return ms -> ID  < i;
    };
};

我想檢查是否找到具有所述ID的元素。 我該如何檢查? 我嘗試使用

if( (*it) -> ID == value ) {
   return false;
}

但這引發了分段錯誤,有什么辦法可以檢查元素是否已經存在?

如果你只是想檢查對象存在,使用std::binary_search

bool exists = std::binary_search(myVector.begin(), myVector.end(), value, comparer());

就是說,如果您想要迭代器,則不僅需要檢查值是否匹配,還必須首先檢查是否有除最終迭代器以外的東西:

auto it = std::lower_bound(myVector.begin(), myVector.end(), value, comparer());
if (it != myVector.end() && (*it)->ID == value) {
   return false;
}

如果確實得到end() ,則該取消引用是未定義的行為,這可能表現為分段錯誤。

暫無
暫無

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

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