Ежедневный бит (е) C++ # 108, C++ 23 std::views::chunk
C++23 std::views::chunk — это простое представление, которое создаст представление поддиапазонов, охватывающих заданное количество элементов каждый.
Если диапазон нельзя разделить без остатка, последний поддиапазон будет содержать оставшиеся (и, следовательно, меньше) элементы.
#include <vector> #include <ranges> std::vector<int> data{1,2,3,4,5,6,7,8,9}; // Iterate over chunks of size 4 (and one chunk of size 1) for (const auto& chunk : data | std::views::chunk(4)) { for (int v : chunk) { // Iterate over elements } } std::vector<int> cube(27,0); // Can be used to iterate multi-dimensional data stored as 1D for (const auto &slice : cube | std::views::chunk(3)) { for (const auto &row : slice | std::views::chunk(3)) { for (const auto &el : row) { // iterate over all elements } } }
Откройте пример в Compiler Explorer.