因此我无法使用find func在我的结构向量中找到一个节点,该节点具有与指定相同的'char'值。这是我的结构的代码,我正在重载比较运算符,但仍然没有运气
// STRUCT
struct alpha
{
string morse;
char letter;
// overload the comparison operator
bool operator==(const alpha& a) const
{
return letter == a.letter;
}
};
这是我的迭代器的代码
void testFunc(vector<alpha> &vect)
{
std::vector<alpha>::iterator it;
it = find(vect.begin(), vect.end(),'e');
if(it != vect.end())
{
// do anything if we ever get here
}
}
任何帮助都会非常感激,我的代码甚至不会编译我得到错误
Invalid operands to binary expression ('alpha' and 'int')
答案 0 :(得分:3)
您需要在struct和char
之间定义一个等于运算符bool operator==(const char c) const
{
return letter == c;
}
答案 1 :(得分:0)
std::find
无法将char
隐式转换为alpha
。您需要提供将执行该转换的构造函数,或者提供您为alpha
函数创建的find
对象,或添加与operator==
进行比较的另一个char
函数}。
此外,您定义的 operator==
函数是否与code
对象进行比较?那应该是正确的吗?
答案 2 :(得分:0)
在find(vect.begin(), vect.end(),'e');
中,find
的第三个参数不是alpha
个对象。你应事先构建这样一个对象:
alpha eKey;
eKey.letter='e';
vector<alpha>::iterator it = find(vect.begin(), vect.end(), eKey);
这将使得使用find
函数。