C++ 在 std::set 的嵌套对中搜索对象
C++ Searching object in nested pair of an std::set
我有一个类型的 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
});
您需要使用 .
而不是 ->
,因为 elem
是对 pair
.
的引用,而不是指针
auto it = std::find_if(X.begin(), X.end(), [value](auto& elem) {
return elem.second.first == value;
});
我有一个类型的 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
});
您需要使用 .
而不是 ->
,因为 elem
是对 pair
.
auto it = std::find_if(X.begin(), X.end(), [value](auto& elem) {
return elem.second.first == value;
});