【发布时间】:2017-04-07 00:44:25
【问题描述】:
我有一组 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。 -
这种情况下的替代方法是什么? @aschepler
-
如此复杂的结构在现实生活中永远没有意义......它使代码难以维护,因为你有多个第一和第二......而且,它可能没有你想要的那么高效。 ..如果你不使用钥匙找物品,你为什么要使用集合。