Вложенные векторы
Элементом вектора может быть другой вектор. Вектор внутри вектора называется вложенным вектором. Вложенные векторы удобны для данных, которые образуют группы, например учебные группы:
std::vector<std::vector<std::string>> studyGroups = {{"Анна", "Борис"}, {"Давид", "Ева", "Нина"}};Читайте тип снаружи внутрь: studyGroups — это вектор, элементы которого имеют тип std::vector<std::string>, то есть векторы строк. Поэтому тип заканчивается двумя угловыми скобками >> подряд: первая закрывает внутренний std::vector<std::string>, вторая — внешний вектор. У каждого внутреннего вектора свои фигурные скобки, и запятая отделяет его от следующего.
В векторе studyGroups два элемента, и каждый из них — одна группа. Отдельного студента вы получаете с помощью двух индексов. studyGroups[1][0] сначала берёт элемент с индексом 1 (вторую группу, {"Давид", "Ева", "Нина"}), а затем элемент с индексом 0 из этого вектора:
std::cout << studyGroups[1][0] << std::endl;Программа выведет:
ДавидВсё, что вы знаете о векторах, работает и для внутренних векторов. studyGroups.size() равно 2, это число групп, а studyGroups[1].size() равно 3, это число студентов во второй группе. Так что у внутренних векторов может быть разная длина. Вызов studyGroups[0].push_back("Тимур") добавляет Тимура в конец первой группы:
studyGroups[0].push_back("Тимур");
std::cout << studyGroups.size() << " " << studyGroups[0].size() << std::endl;
std::cout << studyGroups[0][2] << std::endl;Программа выведет:
2 3
ТимурЦеликом внутренний вектор тоже вывести нельзя: std::cout << studyGroups[1]; заканчивается той же ошибкой, что и вывод целого вектора. Выводите отдельные элементы.
Задание
- 1
Выведите первого участника второй команды. Используйте два индекса. В выводе должна быть строка
Даниил. - 2
Артём присоединился к первой команде. Добавьте
"Артём"в конец первой команды,teams[0], с помощьюpush_back(). - 3
Выведите число участников первой команды и её последнего участника, одно под другим. В выводе должны быть строки
Участников: 3иПоследний: Артём.