Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在c+中的向量中搜索结构中的枚举+;_C++_Vector_Enums_Find - Fatal编程技术网

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; }