#include #include #include #include #include #include int main() { { std::set v { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 }; Block_Container, 4> blocks { v }; auto it { blocks.begin() }; assert(( *it++ == std::vector{ 1, 2, 3, 4 } )); assert(( *it++ == std::vector{ 5, 6, 7, 8 } )); assert(( *it++ == std::vector{ 9, 10, 11, 12 } )); // there aren't enough elements to split this evenly so the // "rest" is placed in the final block. assert(( *it++ == std::vector{ 13 } )); assert( it == blocks.end() ); } { std::vector fruits { "Mango", "Pineapple", "Papaya", "Blueberries", "Blackberries", "Raspberries", "Pear", "Plum", "Peach", "Kiwi", "Passion fruit", "Lychee" }; std::size_t offset { 0 }; for (auto block : make_blocks<3>(fruits)) { for (std::size_t i { 0 }; i < block.size(); ++i) { assert( block[i] == fruits[offset + i] ); } offset += block.size(); } } }