C++ 在结构的集合中查找项
我有一套结构C++ 在结构的集合中查找项,c++,c++11,C++,C++11,我有一套结构 struct Neighbour { int ID; int Left; int Right; } set<NodeNeighbour>NextDoor; struct邻居 { int-ID; int左; 国际权利; } setNextDoor; 如何在此集合中查找项目WARE ID=='number to search' 使用straigth forward set,只需使用set.find()即可找到项目。 搜索一组结构有什么相似之处吗 Thx提前不要使
struct Neighbour
{
int ID;
int Left;
int Right;
}
set<NodeNeighbour>NextDoor;
struct邻居
{
int-ID;
int左;
国际权利;
}
setNextDoor;
如何在此集合中查找项目WARE ID=='number to search'
使用straigth forward set,只需使用set.find()即可找到项目。
搜索一组结构有什么相似之处吗
Thx提前不要使用
集合
,使用地图
并使用ID
作为键
集合
,使用地图
,并使用ID
作为键
std::find_if
,它使用一元谓词函数:
auto result = std::find_if(std::begin(NextDoor), std::end(NextDoor), [numberToSearch] (const auto & n) {
return n.ID == numberToSearch;
});
result
将是指向找到的第一个元素的迭代器
有关更多详细信息和示例,请参见。您可以使用
std::find_if
,它使用一元谓词函数:
auto result = std::find_if(std::begin(NextDoor), std::end(NextDoor), [numberToSearch] (const auto & n) {
return n.ID == numberToSearch;
});
result
将是指向找到的第一个元素的迭代器
有关更多详细信息和示例,请参阅。您可能正在寻找自定义的集合比较器。请看这个问题:您可能正在寻找一个自定义的集合比较器。看这个问题:胡当迟到了几秒钟+1我会选择lambda param的
auto
。@很高兴从auto result=…
=P中删除。只是一个小主意。对不起,标签应该是C++11刚刚修改的。是的,我会这样做,尽管自动类型的键入非常方便,以至于我倾向于忘记以前的C++11甚至存在:)@SirDarius,如果ID不是唯一的,因此可能多次出现在集合中,该怎么办?如何检索ID==numberToSearch的所有项目?Aw dang延迟秒+1我会选择lambda param的auto
。@很高兴从auto result=…
=P中删除。只是一个小主意。对不起,标签应该是C++11刚刚修改的。是的,我会这样做,尽管自动类型的键入非常方便,以至于我倾向于忘记以前的C++11甚至存在:)@SirDarius,如果ID不是唯一的,因此可能多次出现在集合中,该怎么办?如何检索ID==numberToSearch的所有项目?