在C ++中使用std :: rotate旋转嵌套数组

时间:2016-10-25 11:14:06

标签: c++ arrays rotation nested 2d

我想旋转嵌套数组。让我们说

double * buffer[2];
buffer[0] = new double[5];
buffer[1] = new double[5];`

我不想旋转整个缓冲区,而是想只旋转双数组。可以使用std::rotate中的<algorithm>吗?

我知道一个简单的数组应该是什么样子:

#include <iostream>
#include <algorithm>
#include <iterator>

int main() {

   int a[5] = {0, 1, 2, 3, 4};
   for(int x : a) std::cout << x << ' ';
   std::cout << std::endl << std::endl;

   for(int i = a[4] + 1;; ++i) {
       std::rotate( std::begin( a ), std::next( std::begin( a ) ), std::end( a ) );
       a[4] = i;
       for(int x : a) std::cout << x << ' ';
       std::cout << std::endl << std::endl;
       std::this_thread::sleep_for(std::chrono::seconds(1));
   }

   return 0;
}

它实际上只是一个简单的轮换,我想做什么。我想&#34;转移&#34;数组和&#34;追加&#34;最后一个新元素。

我试过像

这样的东西
[...]

std::rotate( std::begin( buffer[i] ), std::next( std::begin( buffer[i] ) ), std::end( buffer[i] ) );

[...]

我将不胜感激任何帮助:)

0 个答案:

没有答案