C++ пропонує різні контейнери, щоб зберігати елементи одного типу у впорядкованому вигляді.
Для контейнерів фіксованого розміру є std::array, а std::vector уміє динамічно змінювати розмір.
Коли ми оголошуємо масив або вектор, потрібно вказати тип елементів, які зберігатиме цей контейнер. Масивам також потрібен розмір. Погляньмо на ці приклади, щоб побачити ініціалізацію обох типів контейнерів:
#include <array>
#include <string>
// std::array<element_type, size> variable_name {list of elements}
std::array<std::string, 3> indie_rock {"yeah", "yeah", "yeah"};
// indie_rock contains the elements "yeah" three times
Вектори зазвичай потребують більше місця, адже вони виділяють памʼять для подальшого зростання. Розмір указувати не потрібно:
#include <vector>
// std::vector<element_type> variable_name {list of elements}
std::vector<int> countdown {3, 2, 1};
// my_vector contains the elements 3, 2 and 1
Примітка: Точний механізм, що стоїть за концепцією шаблонів, знати поки не потрібно, для неї буде окрема концепція далі в дереві силабусу.
Вектори та масиви мають однакові функції для доступу до своїх елементів.
Можна скористатися функціями-членами front і back, щоб отримати перший і останній елементи контейнера.
Є також at й оператор [] для доступу до конкретних елементів.
countdown[0];
// => 3
countdown.at(2);
// => 1
countdown[1] = 4;
// countdown now contains 3, 4 and 1
indie_rock.back() = "yeahs";
// indie_rock is now "yeah", "yeah", "yeahs"
Примітка: Якщо ми виберемо позицію поза межами контейнера,
[]може призвести до невизначеної поведінки. Функціяatнатомість викликала б виняток, що зрештою може полегшити нам життя.
Оскільки vector не має фіксованого розміру, до нього можна додавати чи видаляти елементи.
Для цього найчастіше використовують дві функції: emplace_back і pop_back.
std::vector<std::string> witches {"Holly", "Alyssa", "Shannen"};
witches.pop_back();
// Shannen is no longer with the witches
witches.emplace_back("Rose");
// Rose has joined the team
Перевірити контейнери на порожнечу можна за допомогою функції-члена empty.
Якщо потрібно дізнатися кількість елементів, можна скористатися size.