gpt4 book ai didi

c++ - 此示例代码无法编译

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:50:40 24 4
gpt4 key购买 nike

我无法理解在 cygwin shell 中编译此代码时收到的错误消息。该消息很长,但在这 1,000 行错误的中间某处显示:

no matching call for operator <

这是什么意思?这是我的代码:

#include <iostream>
#include <string>
#include <set>
#include <algorithm>
#include <iterator>

using namespace std;

struct Grade{
string id;
int score;

bool operator() (Grade& a, Grade& b){
return a.id < b.id;
}
};

int main()
{
Grade g;
set<Grade> gs;

g.id = "ABC123";
g.score = 99;
gs.insert(g);

g.id = "BCD321";
g.score = 96;
gs.insert(g);

for(auto it : gs)
cout << it.id << "," << it.score;

return 0;
}

最佳答案

集合需要其元素类型来定义小于运算符。参见 http://www.cplusplus.com/reference/set/set/?kw=set

你可以这样定义它(在等级定义之后):

bool operator< (const Grade& a, const Grade& b){
return a.id < b.id;
}

关于c++ - 此示例代码无法编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31197800/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com