我想在向量中找到一个结构,但我遇到了一些麻烦。我阅读了几篇关于此的文章,但这些文章都在搜索结构的一个元素:我希望能够在搜索时比较结构的多个元素。我的结构和向量定义为:
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;
然后我想在向量订阅中搜索一个struct,但是由于sessionid和matchid的组合是唯一的,所以我需要两者都搜索。仅搜索一个将导致多个结果。
subscription match;
match.tournamentid = 54253876;
match.sessionid = 56066789;
match.matchid = 1108;
subscriptions.push_back(match);
it = find(subscriptions.begin(), subscriptions.end(), match);
find 函数在编译过程中给出以下错误:
main.cpp:245:68: 错误: 'it = std::find [with _IIter = __gnu_cxx::__normal_iterator >, _Tp = echo_client_handler::subscription](((echo_client_handler*)this) 中的 'operator=' 不匹配->echo_client_handler::subscriptions.std::vector<_Tp, _Alloc>:: 以 _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>: :以 _Tp = echo_client_handler::subscription 结尾,_Alloc = std::allocator,std::vector<_Tp, _Alloc>::iterator = __gnu_cxx::__normal_iterator >,类型名 std::_Vector_base<_Tp, _Alloc>::_Tp_alloc_type: :指针 = echo_client_handler::subscription*, (*(const echo_client_handler::subscription*)(& match)))'</p>
还有更多 :) 所以操作符的定义不正确,但是应该怎么做呢?谁能帮我?如何搜索多个元素而不是仅搜索结构的一个元素?