在结构体集合中查找项

Find item in set of struct

本文关键字:查找 集合 结构体      更新时间:2023-10-16

我已经设置了一个结构体。

struct Neighbour
{
int  ID;
int  Left;
int  Right;
}
set<NodeNeighbour>NextDoor;

如果ID=='要搜索的号码',我如何在这个集合中找到一个项目?

对于直接集合,可以简单地使用set.find()查找项。有没有类似的东西来搜索一组结构?

提前致谢

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

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

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

不要使用set,使用map<int,NeighBour>,并使用ID作为密钥。

  • http://en.cppreference.com/w/cpp/container/map

参见示例:

  • http://en.cppreference.com/w/cpp/container/map/operator_at