Как получить возраст объектов внутри вектора? - PullRequest
0 голосов
/ 11 октября 2019

У меня есть вектор, в котором хранятся Student объекты

std::vector<Student> vec;

Student уже инициализирован

Student(std::string nameIs, int ageIs) : name(nameIs), age(ageIs){}

Объекты помещаются в вектор, как показано ниже

Student a;
a.addStudent(Student("john" , 24));
a.addStudent(Student("Sam" , 23));
a.addStudent(Student("Bob" , 28));

Я хочу получить второй объект внутри вектора, и я хочу получить его возраст. У меня уже есть метод getAge(). Я очень плохо знаком с C ++, поэтому я запутался в концепции. Как мне вернуть a объект, который находится внутри vector, а затем проверить, что это за age?

Ответы [ 2 ]

2 голосов
/ 11 октября 2019

Я хочу получить второй объект внутри вектора, и я хочу получить его возраст ... Как мне вернуть объект, который находится внутри вектора, а затем проверить его возраст?

Как и обычный массив в стиле C, std::vector имеет 0-индексированный operator[], который возвращает ссылку на элемент по данному индексу, например:

int age = vec[1].getAge();
0 голосов
/ 11 октября 2019

Краткий ответ: Это точно так же, как если бы вы читали «Возраст» из объекта «Студент».

Более длинная версия: a.addStudent(Student("john" , 24)) фактически вызывает конструктор класса «Студент»и то, что вы добавляете, является объектом класса Student, а не напрямую его возрастом и именем. Поэтому, когда вы извлекаете вещи из этого вектора, в котором хранится этот объект - вы получаете объект класса «Студент». И чтобы прочитать «age» из этого объекта, вы можете использовать либо методы класса, либо, если он имеет публичные члены-данные для age, вы можете прочитать его напрямую, используя object_name.age (т.е. vec [1] .age в вашем случае, так как вам нуженвторой элемент в списке).

Если у вас есть метод, который напрямую возвращает возраст, такой как "getAge", который вы упомянули - он, вероятно, будет делать то же самое.

https://www.geeksforgeeks.org/constructors-c/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...