Что вы хотите сделать, это сделать коллекцию student
объектов.
В C++ класс std::vector
обычно является лучшим выбором для типа коллекции, а также в вашем случае.
Как использовать vector
Для использования std::vector
вы должны сначала #include
файлу <vector>
заголовка. Тогда вы можете объявить std::vector
объект со следующим синтаксисом:
std::vector<T> name;
где T
является тип элементов, которые вы хотите хранить в vector
и name
это имя для коллекции. В вашем случае, вы хотите тип быть student
и хорошее имя для коллекции, содержащей студентов будет students
, например:
std::vector<student> students;
Добавление объектов в vector
сейчас вы можете начать добавлять student
объект в vector
.push_back()
функция vector
класса могут быть использованы для этого, например:
students.push_back(foo);
где foo
является student
переменная, которую создали ранее.
Доступ к объектам в vector
Теперь, когда вы добавили student
к vector
, вы можете получить доступ к нему с помощью функции at
:
students.at(0);
выше линия доступа первый объект в vector
. at
функция также очень полезно, если вы случайно попытаться получить доступ к объекту, которого нет в vector
, к примеру, вы пытаетесь получить доступ ко второму объекту, который мы еще не добавил:
students.at(1);
Потому что мы только имеют один student
, хранящийся в vector
, пока что попытка доступа к второму student
с at
приведет к ошибке . Это здорово! Теперь мы знаем, что мы сделали что-то неправильно, и сообщение об ошибке, вероятно, даже скажет нам, что мы сделали неправильно.
О vector
против необработанного массива
Сырые массив как int numbers[10]
не скажет нам, если мы случайно попытаться получить доступ через конец массива, как int x = numbers[10]
. Не будет никаких полезных сообщений об ошибках, чтобы сказать нам, что что-то не так, программа, вероятно, просто молча продолжит выполнение и начнет вести себя странно. Это то, что мы, как программисты, не хотим. Таким образом, vector
является превосходной альтернативой.
Обратите внимание, что с vector
вам также не нужно указывать размер, как в случае с необработанными массивами. vector
s будет автоматически расти при добавлении к нему новых объектов, поэтому вам не придется беспокоиться о добавлении слишком большого количества.
Я не уверен, что понимаю, что вы пытаетесь сделать ... –
вы спрашиваете, можете ли вы иметь массив структур? Если это так, вы можете это сделать. –
Думаю, он просит создать несколько экземпляров студента с уникальным идентификатором. – rottenoats