我有一个类型的STL集:
std::set< std::pair< double, std::pair< unsigned, vector< unsigned > > > > X
我知道我可以通过更改我的数据结构使事情更简单,但这对我来说不是一个选择。
如何仅在我的集合中内部对的第一个元素中搜索unsigned
类型的元素?
我尝试了以下方法,但无效。
auto it = std::find_if(X.begin(), X.end(), [value_searching]
(const std::pair<double, std::pair< unsigned, vector< unsigned > >& elem) {
return elem->second.first == value_searching
});
答案 0 :(得分:2)
您需要使用.
而不是->
,因为elem
是pair
的引用,而不是指针。
auto it = std::find_if(X.begin(), X.end(), [value](auto& elem) {
return elem.second.first == value;
});