我有一个代码,它使用一个类及其成员来查找容器内的元素,例如下面给出的向量。我正在使用find函数来获取一个元素,但是看到一个错误“C2678 binary'==:'找不到运算符,它采用了'file_element'类型的左手操作数。”
class file_element
{
public:
int line_no;
std::string line;
};
int main(int argc, char *argv[])
{
std::vector<file_element> elements
{
{1, "This"},
{1, "is"},
{1, "Arif"},
{1, "."},
{2, "I"},
{2, "work"}
};
std::vector<file_element>::iterator it = find(elements.begin(), elements.end(), '.');
if ( it != elements.end())
std::cout << "element: " << (*it).line << std::endl;
else
std::cout << "element not found " << std::endl;
std::cin.get();
return 0;
}
我看到的错误似乎与if定义条件的位置相符。我编写的代码与大多数互联网示例的编写方式相同。有什么问题可以解决这个问题?
答案 0 :(得分:0)
当你find
给出'.'
时,你期望find
获得你想要的元素?编译器无法读懂你的想法。
operator== (file_element, char)
会尝试使用find_if
来查找您的元素,但没有定义此类运算符。
您可以定义运算符或提供函数,并使用std::vector<file_element>::iterator it = std::find_if(elements.begin(), elements.end(),
[](const file_element& element) {
return element.line == "."; // or something
});
,如下所示:
{{1}}