![](/img/trans.png)
[英]Unable to assign std::lower_bound return value to vector::iterater
[英]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.