Scala的Seq.grouped的C++等价物?

gcuhipw9  于 2023-02-01  发布在  Scala
关注(0)|答案(1)|浏览(149)

我想在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);
}
ecfsfe2w

ecfsfe2w1#

std::ranges::views::chunk将完成这项工作(但仅在C++23“之后"可用)。

相关问题