TGViewer
Библиотека C/C++ разработчика | cpp, boost, qt Библиотека C/C++ разработчика | cpp, boost, qt @cppproglib · 16.9K subscribers
Post #6649 2.12K
🥳 Генераторы: views::iota и views::repeat

Ranges умеют генерировать их на лету — без выделения памяти под вектор. Разберём два главных генератора.


🍕 views::iota — числовой диапазон

Генерирует последовательность чисел в полуоткрытом интервале [start, end):

// Числа от 0 до 9
for (int i : views::iota(0, 10)) {
std::cout << i << " "; // 0 1 2 3 4 5 6 7 8 9
}


Можно передать только одно значение — получится бесконечная последовательность:

auto naturals = views::iota(1); // 1, 2, 3, 4, ...
auto first_10 = naturals | views::take(10);


❗️ Бесконечный диапазон обязательно нужно ограничить — например, через views::take.


🌳 Индексированный обход (zip + iota)

До появления views::enumerate пару (индекс, значение) получали через views::zip с iota:

std::vector<std::string> fruits = {"яблоко", "банан", "вишня"};

for (auto [i, fruit] : views::zip(views::iota(0), fruits)) {
std::cout << i << ": " << fruit << "\n";
}
// 0: яблоко
// 1: банан
// 2: вишня


В C++23 для этого есть views::enumerate — но zip + iota по-прежнему работает и даёт понять, как устроена индексация изнутри.


🍙 views::repeat — повторение значения (C++23)

Генерирует бесконечный поток из одного и того же значения:

for (int x : views::repeat(0) | views::take(5)) {
std::cout << x << " "; // 0 0 0 0 0
}


Или сразу с ограничением — передаём второй аргумент:

for (auto s : views::repeat("hello", 3)) {
std::cout << s << " "; // hello hello hello
}


❗️ Форма с двумя аргументами появилась в C++23 и возвращает конечный диапазон — views::take не нужен.


📍Навигация: ВакансииЗадачиСобесы

Библиотека C/C++ разработчика

#константная_правильность
  • 🥰 5
  • 🤩 1
More from @cppproglib
  1. Sep 19, 2026А вы уже забрали свой подарок ко Дню программиста? К вашему профессиональному празднику Tp…
  2. Sep 18, 2026От исходного кода до процессора: разберись, как работает программа 💻 Стартует практически…
  3. Sep 15, 2026😭 Как не потратить недельный лимит AI-кодинга за три дня? Разберём на вебинаре, как трати…
  4. Sep 13, 2026🤪 Если бы можно было задать один вопрос про AI в разработке — что бы вы спросили? Как выб…
  5. Sep 13, 2026🤩 Inline static в классах — забудь про .cpp Сколько раз ты забывал добавить определение s…
  6. Sep 13, 2026🌸 Вселенная намекает: пора уже начать этот курс С 14 сентября цены в Proglib Academy выра…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →