如何查找一组类型对是否包含元素作为第二个成员?

时间:2017-03-25 02:32:11

标签: c++ stl set std-pair

如果我有以下类型的一组:

std::set<std::pair<double,unsigned> > X;

我希望找到第一次出现unsigned y的位置,这将是std::set X中的第二个成员。

我怎样才能有效地做到这一点?

TIA

1 个答案:

答案 0 :(得分:0)

您可以将std::find_if与谓词一起使用。

int main() {
  std::set<std::pair<double,unsigned>> X { {1.1, 1}, {2.2, 2}, {3.3, 3} };
  unsigned valToSearch = 2;

  // the searah method with predicate:
  auto it = std::find_if(X.begin(), X.end(),
     [valToSearch](const std::pair<double,unsigned>& elem) {return elem.second == valToSearch;});

  if(it != X.end())
    std::cout << it->first << ", " << it->second;

  return 0;
}

<强>输出

  

2.2,2