std::ranges::repeat_view — generate repeated values.
1#include <ranges>23// Repeat value 5 times4auto v = std::views::repeat(42, 5);5for (int x : v) {6 std::cout << x << " "; // 42 42 42 42 427}89// Infinite repeat (use with take)10auto infinite = std::views::repeat(0);11auto first5 = infinite | std::views::take(5);12for (int x : first5) {13 std::cout << x << " "; // 0 0 0 0 014}1516// Repeat with transform17auto pattern = std::views::repeat(std::string("ab"), 3)18 | std::views::join;19// "ababab"2021// Useful for padding22std::vector<int> data = {1, 2, 3};23auto padded = data24 | std::views::chain(std::views::repeat(0, 5 - data.size()));25// 1 2 3 0 02627// Compile-time28constexpr auto zeros = std::views::repeat(0, 10);29static_assert(zeros.size() == 10);3031// Size32std::cout << v.size(); // 533std::cout << v[2]; // 423435// Random access36auto it = v.begin();37std::cout << *(it + 3); // 42
Use cases: