如果我有一组以下类型:
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