Заполнение многомерных структур в C++
Массив векторов
Пустой массив векторов заполняют двумя циклами.
Внешний проходит ячейки массива, внутренний
дописывает числа в вектор через push_back:
std::vector<int> arr[2];
for (int i = 0; i < 2; ++i) {
for (int j = 1; j <= 3; ++j) {
arr[i].push_back(j);
}
}
std::cout << arr[1][2] << "\n"; // выведет 3
Словарь векторов
Векторы в словаре собирают так же. Вместо индекса массива берут ключ:
std::map<std::string, std::vector<int>> dct;
std::string keys[2] = {"a", "b"};
for (int i = 0; i < 2; ++i) {
for (int j = 1; j <= 2; ++j) {
dct[keys[i]].push_back(j);
}
}
std::cout << dct["b"][1] << "\n"; // выведет 2
Вектор словарей
Каждый элемент вектора - отдельный словарь.
Его собирают на шаге цикла и кладут в вектор
через push_back:
std::vector<std::map<std::string, int>> vec;
for (int i = 1; i <= 2; ++i) {
std::map<std::string, int> dct;
dct["id"] = i;
vec.push_back(dct);
}
std::cout << vec[1]["id"] << "\n"; // выведет 2
Практические задачи
Заполните массив из двух векторов числами
1, 2 и 3 в каждом.
Выведите последний элемент второго вектора.
Заполните словарь векторов. По ключам
"a" и "b" лежат числа
4 и 5. Выведите второе
число ключа "b".
Заполните вектор двумя словарями. В каждом
есть ключ "age", числа 27
и 31. Выведите возраст второго
словаря.