Цикл по многомерным комбинациям в C++
Массив векторов
Внешний цикл идет по ячейкам массива, внутренний - по элементам вектора. Сумму копят с нуля:
std::vector<int> arr[2] = {
{1, 2},
{3, 4, 5},
};
int sum = 0;
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < arr[i].size(); ++j) {
std::cout << arr[i][j] << "\n";
sum += arr[i][j];
}
}
std::cout << sum << "\n"; // выведет 15
Словарь векторов
Внешний цикл дает вектор по очередному ключу, внутренний проходит его элементы:
std::map<std::string, std::vector<int>> dct = {
{"a", {1, 2}},
{"b", {3, 4}},
};
int sum = 0;
for (const auto& elem : dct) {
for (int j = 0; j < elem.second.size(); ++j) {
std::cout << elem.second[j] << "\n";
sum += elem.second[j];
}
}
std::cout << sum << "\n"; // выведет 10
Вектор словарей
Внешний цикл выбирает словарь по индексу, внутренний складывает значения его пар:
std::vector<std::map<std::string, int>> vec = {
{{"a", 1}, {"b", 2}},
{{"a", 3}, {"b", 4}},
};
int sum = 0;
for (int i = 0; i < vec.size(); ++i) {
for (const auto& elem : vec[i]) {
std::cout << elem.second << "\n";
sum += elem.second;
}
}
std::cout << sum << "\n"; // выведет 10
Дан массив векторов:
std::vector<int> arr[2] = {
{10, 20},
{30},
};
Найдите сумму всех чисел и выведите ее в консоль.
Дан словарь векторов:
std::map<std::string, std::vector<int>> dct = {
{"Ann", {5, 4, 5}},
{"Bob", {3, 5, 4}},
};
Найдите сумму всех оценок и выведите ее в консоль.
Дан вектор словарей:
std::vector<std::map<std::string, int>> vec = {
{{"a", 10}, {"b", 20}},
{{"a", 30}, {"b", 40}},
};
Найдите сумму всех чисел и выведите ее в консоль.