【问题标题】:C++ Searching object in nested pair of an std::setC++ 在 std::set 的嵌套对中搜索对象
【发布时间】: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
        });

【问题讨论】:

  • -&gt; 的左侧应该只剩下一个指针或迭代器。 elem 两者都不是 - 它是 pair
  • 这种情况下的替代方法是什么? @aschepler
  • 如此复杂的结构在现实生活中永远没有意义......它使代码难以维护,因为你有多个第一和第二......而且,它可能没有你想要的那么高效。 ..如果你不使用钥匙找物品,你为什么要使用集合。

标签: c++ stl set std-pair


【解决方案1】:

您需要使用. 而不是-&gt;,因为elem 是对pair 的引用,而不是指针。

auto it = std::find_if(X.begin(), X.end(), [value](auto& elem) {
  return elem.second.first == value;
});

【讨论】:

  • 这样我只能做 (elem.second) 但 (elem.second.first) 不起作用
  • @FabiaBushraTamanna 在什么方面不起作用?为我工作。
  • 我的错,我在集合声明中错过了一个“>”@joseph
猜你喜欢
  • 1970-01-01
  • 2020-06-15
  • 1970-01-01
  • 1970-01-01
  • 2018-03-20
  • 1970-01-01
  • 2020-06-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多