РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
338 of 815 menu

Функция views::join

Функция views::join из диапазонной библиотеки C++ создает представление, которое объединяет все вложенные диапазоны в один плоский диапазон. Она принимает диапазон диапазонов (например, вектор векторов или вектор строк) и возвращает представление, элементы которого следуют друг за другом без учета границ между вложенными диапазонами. Это позволяет использовать один цикл для перебора всех элементов вместо вложенных циклов.

Синтаксис

std::views::join(range)

Пример

Давайте объединим вектор векторов в один плоский диапазон и выведем все элементы через пробел:

#include <iostream> #include <vector> #include <ranges> using namespace std; int main() { vector<vector<int>> v = {{1, 2}, {3, 4, 5}}; for (int n : v | views::join) { cout << n << " "; } cout << endl; return 0; }

Результат выполнения кода:

1 2 3 4 5

Пример

Давайте объединим вектор строк в один диапазон символов и выведем все символы последовательно:

#include <iostream> #include <vector> #include <string> #include <ranges> using namespace std; int main() { vector<string> v = {"abc", "de"}; for (char ch : v | views::join) { cout << ch; } cout << endl; return 0; }

Результат выполнения кода:

"abcde"

Пример

Давайте объединим вложенные диапазоны и применим к результату фильтрацию, оставив только четные числа:

#include <iostream> #include <vector> #include <ranges> using namespace std; int main() { vector<vector<int>> v = {{1, 2, 3}, {4, 5, 6}}; for (int n : v | views::join | views::filter([](int x) { return x % 2 == 0; })) { cout << n << " "; } cout << endl; return 0; }

Результат выполнения кода:

2 4 6

Смотрите также

  • функция views::all,
    которая создает представление из диапазона
  • функция views::filter,
    которая фильтрует элементы диапазона
  • функция views::transform,
    которая преобразует элементы диапазона
  • функция views::split,
    которая разбивает диапазон на поддиапазоны
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить