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



如果我有一组以下类型:

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

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

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

蒂亚

您可以将

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

相关内容

最新更新