我有一个 C 整数数组及其大小,即int* arr, unsigned size
. 我想从中获得类似的视图,它将具有成对的整数作为元素。
澄清一下,任务是:我收到一个类似的数组[1,2,3,4]
,我想要一个视图,这将是 smth like [(1,2),(3,4)]
。
是否有任何便捷的方法可以通过 boost 或 std 范围以这种方式转换数组?
我有一个 C 整数数组及其大小,即int* arr, unsigned size
. 我想从中获得类似的视图,它将具有成对的整数作为元素。
澄清一下,任务是:我收到一个类似的数组[1,2,3,4]
,我想要一个视图,这将是 smth like [(1,2),(3,4)]
。
是否有任何便捷的方法可以通过 boost 或 std 范围以这种方式转换数组?
您可以使用 range-v3,它必须span
查看原始数组,并对view::chunk
相邻元素进行分组:
#include <iostream>
#include <range/v3/view/chunk.hpp>
#include <range/v3/span.hpp>
#include <range/v3/algorithm/for_each.hpp>
namespace view = ranges::view;
int main() {
int vec[] = { 1, 2, 3, 4, 5, 6 };
ranges::span<int> s(vec, sizeof(vec)/sizeof(vec[0]));
ranges::for_each(s | view::chunk(2), [] (auto chunk) {
std::pair pr{chunk.at(0), chunk.at(1)};
std::cout << pr.first << " " << pr.second << "\n";
});
}