C++ 在c+中的向量中搜索结构中的枚举+;
我有一个C++ 在c+中的向量中搜索结构中的枚举+;,c++,vector,enums,find,C++,Vector,Enums,Find,我有一个enum,一个以该enum为成员的结构,以及这些结构的向量: enum TickerType { tt1, tt2, tt3 }; struct Ticker { std::string name; TickerType type; }; std::vector<Ticker> vect; 并带着: if ( std::find ( vect.begin(), vect.end(), find_ticker ( tt1 ) ) != tickers.end() )
enum
,一个以该enum
为成员的结构,以及这些结构的向量:
enum TickerType { tt1, tt2, tt3 };
struct Ticker {
std::string name;
TickerType type;
};
std::vector<Ticker> vect;
并带着:
if ( std::find ( vect.begin(), vect.end(), find_ticker ( tt1 ) ) != tickers.end() )
但我明白了
*Dfp是应用程序的全局名称空间,find_ticker在我需要它的实现文件中的一个异常名称空间中定义如果要使用谓词进行查找,则调用的函数是错误的std::find
用于基于值进行查找,因此您尝试在向量中查找与find\u ticker
对象相等的值
您应该改为使用。将vect与tickers进行比较?或者您可以定义全局
bool运算符==(const Ticker&lhs,const Ticker&rhs)
并使用查找函数(但这种比较可能不同于仅enum
比较)
if ( std::find ( vect.begin(), vect.end(), find_ticker ( tt1 ) ) != tickers.end() )
error: no match for ‘operator==’ (operand types are ‘Dfp::Ticker’ and
‘const {anonymous}::find_ticker’) || { return *__it == _M_value; }