c++ - 如何从数组生成对 View ?

标签 c++ boost range-v3 boost-range

我有一个 int 的 C 数组及其大小,即 int* arr, unsigned size。我想从中得到类似 View 的东西,它将成对的 int 作为元素。

澄清一下,任务是:我收到一个像 [1,2,3,4] 这样的数组,我想要一个像 [(1,2 ),(3,4)].

是否有任何方便的方法通过 boost 或范围(std::ranges 或 range-v3)以这种方式转换数组?

最佳答案

range v3 ,您可以使用 ranges::v3::view::chunk(2)

创建大小为 2 的范围

或者创建一个元组:

auto r = ranges::view::counted(p, size);
auto even = r | ranges::view::stride(2);
auto odd = r | ranges::view::drop(1) | ranges::view::stride(2);
auto pairs = ranges::view::zip(even, odd);

Demo

关于c++ - 如何从数组生成对 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53882570/

相关文章:

c++ - 放大 2D 场景中的对象?

c++ - 扩展 boost::lexical_cast 用于其他类数据类型

c++ - 如何用 range-v3 的范围填充 std::array?

c++ - 为什么我无法在 range-v3 中获取范围的大小?

c++ - 为 std::vector<double> boost 自定义验证器

c++ - 根据转换后的值查找最小元素

c++ - char 到 char* 的转换无效 - 将字符串数组中的 char 复制到另一个字符串数组

c++ - rand 在不改变种子的情况下改变值(value)

c++ - Erlang 和 C/C++ 集成的状态?

c++ - 加入特定的 boost 线程