Chunk a std::vector into fixed-size batches
C++
#include <algorithm>
#include <cstddef>
#include <vector>
template <class T>
std::vector<std::vector<T>> chunk(const std::vector<T>& src, std::size_t n) {
std::vector<std::vector<T>> out;
if (n == 0) return out;
out.reserve((src.size() + n - 1) / n);
for (std::size_t i = 0; i < src.size(); i += n) {
auto end = std::min(i + n, src.size());
out.emplace_back(src.begin() + i, src.begin() + end);
}
return out;
}