gpt4 book ai didi

c++ - 在 vector 中查找结构

转载 作者:太空狗 更新时间:2023-10-29 20:29:01 27 4
gpt4 key购买 nike

我想在 vector 中找到一个结构,但我遇到了一些麻烦。我阅读了几篇关于此的文章,但这些都是搜索结构的一个元素:我希望能够在搜索时比较结构的多个元素。我的结构和 vector 定义为:

struct subscription {
int tournamentid;
int sessionid;
int matchid;

bool operator==(const subscription& m) const {
return ((m.matchid == matchid)&&(m.sessionid==sessionid)&&(m.tournamentid==tournamentid));
}
};

vector<subscription> subscriptions;

然后我想在 vector 订阅中搜索一个结构,但是由于 sessionid 和 matchid 的组合是唯一的,所以我需要搜索两者。仅搜索一个将导致多个结果。

    subscription match;
match.tournamentid = 54253876;
match.sessionid = 56066789;
match.matchid = 1108;
subscriptions.push_back(match);

it = find(subscriptions.begin(), subscriptions.end(), match);

查找函数在编译过程中出现如下错误:

main.cpp:245:68: error: no match for ‘operator=’ in ‘it = std::find [with _IIter = __gnu_cxx::__normal_iterator >, _Tp = echo_client_handler::subscription](((echo_client_handler*)this)->echo_client_handler::subscriptions.std::vector<_Tp, _Alloc>::begin with _Tp = echo_client_handler::subscription, _Alloc = std::allocator, std::vector<_Tp, _Alloc>::iterator = __gnu_cxx::__normal_iterator >, typename std::_Vector_base<_Tp, _Alloc>::_Tp_alloc_type::pointer = echo_client_handler::subscription*, ((echo_client_handler*)this)->echo_client_handler::subscriptions.std::vector<_Tp, _Alloc>::end with _Tp = echo_client_handler::subscription, _Alloc = std::allocator, std::vector<_Tp, _Alloc>::iterator = __gnu_cxx::__normal_iterator >, typename std::_Vector_base<_Tp, _Alloc>::_Tp_alloc_type::pointer = echo_client_handler::subscription*, (*(const echo_client_handler::subscription*)(& match)))’

还有更多 :) 所以运算符没有正确定义,但应该如何完成呢?谁能帮我?如何搜索多个元素而不是结构中的一个元素?

最佳答案

可能是您没有为指定类型?

std::vector<subscription>::iterator it = 
find(subscriptions.begin(), subscriptions.end(), match);

关于c++ - 在 vector 中查找结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11340802/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com