您好我有以下std :: vector:
std::vector<int> source ={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}
我想要将它改组,以便对于给定的数字,例如n = 4就是这样的输出向量:
std::vector<int> output = {3,2,1,0,7,6,5,4,11,10,8,9,15,14,13,12}
任何想法应该是什么功能?
答案 0 :(得分:2)
正如Lightness Races in Orbit
在评论中所说,可以通过一点点努力就可以使用标准算法函数来完成。
using vector_size_t = std::vector<int>::size_type;
std::vector<int> source = { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 };
std::vector<int> result = source;
vector_size_t source_size = source.size();
vector_size_t group_size = 4;
for(vector_size_t i = 0; i < source_size / group_size; ++i)
{
std::reverse
(
std::next(std::begin(result), i * group_size),
std::next(std::begin(result), std::min((i + 1) * group_size, source_size))
);
}