我想在C++中使用Scala的.grouped
的惯用版本(std::算法或类似版本),它将序列分成大小为N
的组,其中最后一组可能更小。
引用:https://www.scala-lang.org/api/current/scala/collection/Seq.html分组编号(大小:整数):迭代器%5BC%5D
我已经成功地将循环用于std::min
,但我希望有一些内置的东西。这是我的分组为7块的解决方案(在SO的另一个答案中找到):
std::vector<std::vector<uint64_t>> chunked;
std::vector<uint64_t> flat;
// group into chunks of 7
for (size_t i = 0; i < flat.size(); i += 7) {
auto last = std::min(flat.size(), i + 7);
std::vector<uint64_t> chunk =std::vector<uint64_t>(flat.begin() + i, flat.begin() + last);
chunked.emplace_back(chunk);
}
1条答案
按热度按时间ecfsfe2w1#
std::ranges::views::chunk将完成这项工作(但仅在C++23“之后"可用)。