gpt4 book ai didi

c++ - 下面的代码有什么问题。我收到运行时错误

转载 作者:行者123 更新时间:2023-11-27 22:33:51 25 4
gpt4 key购买 nike

我试图在字符串的二维 vector 中找到学生的最大平均分数。编译后出现运行时错误。

例如。学生的平均分是:James 80,Nick 65,Amit 50,Fernando 40。现在平均数最高的是James 80

Lambda 函数内部是否存在任何问题?为什么下面的程序会崩溃?

#include <bits/stdc++.h>
using namespace std;
int main() {
vector<vector<string> > vect{{"James", "70"}, {"Fernando", "40"},
{"Nick", "60"}, {"James", "90"},
{"Nick", "70"}, {"Amit", "50"}};

auto it = max_element(vect.cbegin(), vect.cend(),
[](auto const& left, auto const& right) {
return stoi(left[1]) < stoi(left[2]);
});

cout << (*it)[0] << " : " << (*it)[1] << endl;
return 0;
}

预期输出:James 80

最佳答案

您的 lambda 中有两个小问题。首先(如注释中所述),它应该比较 leftright,而不是 leftleft。其次,索引不正确 - left[2] 是越界访问,会产生未定义的行为。你可以用这个来解决这两个问题:

[](auto const& left, auto const& right)
{ return stoi(left[1]) < stoi(right[1]); }
// ^^^^^ ^

关于c++ - 下面的代码有什么问题。我收到运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57406660/

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