Чтение элементов
У каждого элемента вектора есть позиция, которая называется индексом. Индексы считаются от нуля: у первого элемента индекс 0, у второго 1, у третьего 2 и так далее. Индекс можно представлять как число шагов от начала вектора: первый элемент стоит прямо в начале, в нуле шагов от него.
std::vector<std::string> resolutions = {"Вести дневник", "Записаться на курс соколиной охоты", "Научиться жонглировать"};Здесь у "Вести дневник" индекс 0, у "Записаться на курс соколиной охоты" индекс 1, а у "Научиться жонглировать" индекс 2.
Чтобы получить элемент, напишите его индекс в квадратных скобках после имени вектора:
std::cout << resolutions[0] << std::endl;
std::cout << resolutions[2] << std::endl;Программа выведет:
Вести дневник
Научиться жонглироватьЭлемент вектора строк — это обычная строка std::string. Поэтому его можно сохранить в переменной и вывести с подписью:
std::string firstResolution = resolutions[0];
std::cout << "Первое: " << firstResolution << std::endl;Программа выведет:
Первое: Вести дневникОстерегайтесь самой частой ошибки: раз счёт начинается с нуля, у последнего из трёх элементов индекс 2, а не 3. Что будет, если запросить индекс за концом вектора, вы скоро увидите.
Весь вектор сразу с помощью std::cout вывести нельзя. Если написать std::cout << resolutions << std::endl;, программа не скомпилируется:
main.cpp:7:15: error: invalid operands to binary expression ('ostream' (aka 'basic_ostream<char>') and 'std::vector<std::string>' (aka 'std::vector<basic_string<char>>'))В сообщении сказано, что оператору << достались значения, с которыми он не умеет работать (его операнды): поток вывода (ostream) с одной стороны и вектор с другой. std::cout умеет выводить числа, символы и строки, но не вектор. Под сообщением Clang выводит длинный список заметок (note:), который можно пропустить. Поэтому выводите вектор по элементам:
std::cout << resolutions[0] << ", " << resolutions[1] << ", " << resolutions[2] << std::endl;Программа выведет:
Вести дневник, Записаться на курс соколиной охоты, Научиться жонглироватьДля длинного вектора это было бы слишком много писать. В следующем уроке вы узнаете про циклы, которые перебирают все элементы за вас.
Задание
- 1
Выведите первого коллегу из вектора
colleaguesотдельной строкой. В выводе должна быть строкаПавел. - 2
Создайте переменную
favoriteColleagueтипаstd::stringи сохраните в ней одного коллегу на ваш выбор. Прочитайте его из вектора по индексу, напримерcolleagues[2]. Затем выведите переменную с подписью, напримерЛюбимый коллега: Лиза. - 3
Наконец, выведите всех трёх коллег в одной строке через запятую и пробел:
Павел, Артём, Лиза.