簡體   English   中英

查找與存儲在向量中的對象相對應的迭代器

[英]Finding an iterator corresponding to an object stored in a vector

我有一個向量v包含類型結構的對象說A.現在我需要找到存儲在這個向量中的特定對象的迭代器。 例如:

  struct a
    {
    };
    vector<a> v;
    struct temp;  //initialized

現在,如果我將使用

find(v.begin(),v.end(), temp);

然后編譯器生成錯誤,表示與運算符'=='不匹配。

獲取與向量中的對象相對應的迭代器的任何解決方法?

您必須為您的類提供bool operator==(const a& lhs, const a& rhs)相等運算符,或者將比較函數傳遞給std::find_if

struct FindHelper
{
  FindHelper(const a& elem) : elem_(elem) {}
  bool operator()(const a& obj) const
  {
  // implement equality logic here using elem_ and obj
  }
  const a& elem_;
};

vector<a> v;
a temp;
auto it = std::find_if(v.begin(), v.end(), FindHelper(temp));

或者,在c ++ 11中,您可以使用lambda函數而不是函子。

auto it = std::find_if(v.begin(), v.end(),  
                       [&temp](const a& elem) { /* implement logic here */ });

暫無
暫無

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

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