【问题标题】:Find item in set of struct在结构集中查找项目
【发布时间】:2015-09-10 16:52:56
【问题描述】:

我已经设置了一个结构。

struct Neighbour
{
int  ID;
int  Left;
int  Right;
}

set<NodeNeighbour>NextDoor;

我如何在此集合中找到 ID=='要搜索的编号'的项目?

使用直前集可以简单地使用 set.find() 找到一个项目。 搜索一组结构有什么类似的吗?

提前谢谢

【问题讨论】:

标签: c++ c++11


【解决方案1】:

您可以使用std::find_if,它使用一元谓词函数:

auto result = std::find_if(std::begin(NextDoor), std::end(NextDoor), [numberToSearch] (const auto & n) {
    return n.ID == numberToSearch;
});

result 将是一个指向找到的第一个元素的迭代器。

有关更多详细信息和示例,请参阅http://en.cppreference.com/w/cpp/algorithm/find

【讨论】:

  • 晚了几秒钟。 +1 我会选择 auto 作为 lambda 参数。
  • @Happy 从auto result = ... 中删除=P。只是一个小想法。
  • 抱歉,tag应该是C++11 刚刚修改了
  • yes 就是这么做的,尽管自动类型的输入要方便得多,以至于我倾向于忘记甚至存在 pre-C++11 :)
  • @SirDarius,如果 ID 不是唯一的,因此可能不止一次出现在集合中怎么办?如何检索 ID==numberToSearch 的所有项目?
【解决方案2】:

不要使用set,使用map&lt;int,NeighBour&gt; 并使用ID 作为键。

查看使用示例:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 2015-02-21
    • 2011-02-18
    • 2016-03-14
    • 2012-11-17
    • 2016-02-20
    相关资源
    最近更新 更多