如果我有以下类型的一组:
std::set<std::pair<double,unsigned> > X;
我希望找到第一次出现unsigned y
的位置,这将是std::set X
中的第二个成员。
我怎样才能有效地做到这一点?
TIA
答案 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