Я очень новичок в 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");
}
Заранее спасибо всем, кто может помочь.