Как обратиться к полям и методам объектов, которые находятся в векторе?
Вот, например, у меня есть такой класс:
class students
{
public:
string name;
int score;
int age;
students(string name, int score, int age)
{
this->name = name;
this->score = score;
this->age = age;
}
};
И вот такой вектор:
vector<students> vc =
{
students("Ваня", 124, 22),
students("Саша", 140, 24),
students("Миша", 127, 19),
students("Вася", 131, 22),
students("Максим", 119, 19),
students("Сережа", 141, 25),
students("Леша", 116, 18),
students("Олег", 121, 18)
};
Вопрос: можно ли как-то по индексу ячейки вектора (или еще по чему-то) обратиться к полям и методам объекта, который находится в этой ячейке? Например, я хочу установить объекту, который находится в 3 ячейке, другое значение в поле score, но именно через точку, а не через конструктор. Как я могу и могу ли вообще это сделать?
Ответы (1 шт):
Запросто:
vc[2].score = new_value;
Конечно, пока поля объявлены как public.
Можно только предложение? А именно - переписать конструктор без лишних копирований:
students(const string& name, int score, int age):name(name),score(score),age(age){}
И - мелочь, конечно - но при беглом взгляде кажется, что students - студенты - это и есть вектор. А один - все-таки student. А чтоб отличать тип от объекта - я бы воспользовался стандартным соглашением, что имя пользовательского типа начинается с прописной буквы - Student...