创建结构体向量,表达式:向量下标超出范围
Creating a vector of structs, expression: vector subscript out of range
我对 c++很陌生,目前正在尝试完成一些小挑战以跟上更简单的方面。
我正在尝试创建一个数组(找到的信息以表明向量相同且更好(的结构来保存大约 10 人的数据。每个人都有一个"索引"(用于识别person1,person2,person3等(,一个"num"(用于存储收集的数据(和一个"rank"(我打算使用收集的数据对人员进行排序的变量(
代码在编译之前没有显示任何错误,但是,当输入第一条数据时,我收到以下消息:
"调试断言失败!
程序: C:\WINDOWS\SYSTEM32\MSVCP140D.dll 文件: d:\program files\microsoft visual studio\community\vc\tools\msvc\14.12.25827\include\vector 行: 1795
表达式:向量下标超出范围">
我尝试搜索多个线程,但我似乎无法弄清楚为什么会出现这个问题。
我的代码:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
struct person
{
int index; /*person number*/
int num; /*number of pancakes eaten*/
int rank; /*rank used for sorting people*/
};
vector<person> people; /*create a vector (array) of "person"'s*/
void getData()
{
cout << "You will be asked to enter data from 10 different people" << endl;
cout << "n" << "The question is; 'How many pancakes did they eat for breakfast?'" << endl;
cin.get();
for (int i = 1; i <= 10; i++)
{
system("CLS");
int j;
cout << "Person " << i << " : ";
cin >> j;
person temp;
people.push_back(temp);
people[i].index = i;
people[i].num = j;
people[i].rank = i;
}
}
int main()
{
getData(); /*collect data for the people*/
system("CLS");
cout << "Data Collected : " << endl;
system("pause");
}
提前感谢任何可以提供帮助的人。
问题出在您的索引中。索引从0开始,而不是1。所以发生的情况是,当你推送第一个元素时,它存储在people[0]
.然后你尝试访问people[1]
,因为i = 1
.因此,下标错误超出范围。
您需要将代码修改为:
....
for (int i = 0; i < 10; i++)
{
system("CLS");
int j;
cout << "Person " << i << " : ";
cin >> j;
person temp;
people.push_back(temp);
people[i].index = i;
people[i].num = j;
people[i].rank = i;
}
....
相关文章:
- 尝试通过多个向量访问变量时,向量下标超出范围
- c++下标运算符到下级类向量
- 创建结构体向量,表达式:向量下标超出范围
- 向量下标超出向量向量的范围
- 向量下标出的范围错误.即使向量的索引大于访问数据的索引,也会发生误差
- 行进立方体重建 - 向量下标超出范围
- 为什么简单的C++向量函数会产生越界的下标
- C 向量下标超出范围,没有逻辑错误,无法弄清楚
- C 表达式:向量下标出范围错误线:1733
- 对的向量无效的向量<T>下标
- OPENCV图像处理,向量下标超出范围
- 尝试加载DirectX 11中的obj文件时,向量下标
- 向量下标超出范围-类构造函数初始化中的2D向量
- 向量下标超出范围-气泡排序-改进
- 向量下标超出范围的多维向量
- 具有基类向量的类的下标运算符重载,该向量必须返回派生类
- 使用向量和指针的双下标重载的区别
- SDL向量下标超出范围
- 重载向量下标运算符以获取字符*或字符串
- 向量下标超出范围- c++