【发布时间】:2021-04-25 23:49:17
【问题描述】:
我正在尝试检查结构列表中是否已经存在具有相同值的元素,因此如果没有,我会将新结构推回列表。将其视为具有帐户的系统并且是否已经存在帐户我不想再将它添加到列表中。
这是我在 main 中的代码:
accounts test;
test.bal = 0;
test.id = 0;
std::list <accounts> accs;
std::list<accounts>::iterator check;
这是我在 main 之外的代码:
#include <list>
#include <iterator>
#include <algorithm>
struct accounts {
long id;
int bal;
};
这是我在 for 循环中的代码:
check = find(accs.begin(), accs.end(), test.id);
if (check == accs.end()) {
accs.push_back(test);
}
运行代码时出现编译器错误:
错误 C2676 二进制“==”:“帐户”未定义此运算符或 转换为预定义可接受的类型 运算符 bankacc C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29333\include\xutility 5440
我看过其他帖子,我想我需要做一个
if(check == accs.id.end())
或类似的东西,但它不起作用,显示错误:
错误(活动)E0135 类“std::list
" 没有成员 "id"
有什么想法吗? :)
【问题讨论】:
-
我想我需要做一个别猜了,编译器会告诉你一个准确的行。
-
@S.M.让我改进我的问题
-
if(check == accs.id.end())不正确或解决办法。 -
阅读使用复数名词表示单数事物的代码会变得非常混乱。如果一个类型代表一个帐户,则称它为“帐户”,而不是“帐户”。
-
@molbdnilo 当我删除 for 循环中的部分时,代码可以工作,是的,我很抱歉你对我忘记更改的变量名是正确的
标签: c++ list struct compiler-errors