gpt4 book ai didi

c++ - C++读取访问冲突,结构 vector

转载 作者:行者123 更新时间:2023-12-03 08:04:55 26 4
gpt4 key购买 nike

我有一个“程序”,我想按照自己想的方式行事,但是情况是:

我想创建一个最大元素等于25的结构 vector ,然后通过函数初始化每个结构成员(这次只有名称)。我的问题是我遇到异常错误:( 引发异常:读取访问冲突),我不知道自己做错了什么。 (并且程序需要以一个“-”字符结束输入的名称。)

代码:

#include <iostream>
#include <string>
#include <ctime>
#include <cstdlib>
#define MAXstudent 25
#include <sstream>
#include <vector>
using namespace std;

struct student {
string name;
};

void get_input(vector<student>& student_group) {

for (int i = 0; i < MAXstudent; i++) {

//name
string temp_variable = "";
cout << "Student name: ";
getline(cin, temp_variable);
if (temp_variable != "-") {
//student_group.push_back(student());
student_group[i].name = temp_variable;
cout << endl;
}
else {
student_group.push_back(student());
student_group[i].name = temp_variable;
break;
}
}
}

void show_solution (vector<student>& student_group) {
int i = 0;
while (student_group[i].name != "-") {
cout << "\nSolutions: " << endl;

cout << endl << i + 1 << '.' << "kert name: " << student_group[i].name;
i++;
}

}

int main() {
srand(time(0));
vector<student>student_group[MAXstudent];
get_input(student_group[MAXstudent]);
show_solution (student_group[MAXstudent]);
}

最佳答案

您的main应该是:

int main() {
srand(time(0));
vector<student>student_group(MAXstudent); // create one vector with MAXstudent elements in it
//vector<student>student_group[MAXstudent]; - this creates MAXstudent vectors with 0 elements in each
get_input(student_group);
show_solution (student_group);
}

在您的代码中,您创建了 vector 数组,并使用了超出该数组范围的 vector 。您应该了解自己在做什么,而不是创建随机代码并期望它能以某种方式工作。

关于c++ - C++读取访问冲突,结构 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60119872/

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