C ++相当于python的itertools :: cycle

时间:2015-11-01 11:29:27

标签: c++ containers cycle

是否有类似于python的itertools :: cycle的C ++类(或libboost类)?

我正在寻找一个可以“滚动”或“在一个循环中移动”的容器类。整数示例:

MyCont = {{1,2,3}}
MyCont.roll()  // MyCont now holds {{2,3,1}}
cout << MyCont[0] << endl; // returns 2
cout << MyCont[1] << endl; // returns 3

我是否需要自己实施,或者某处是否存在现有实施?

修改

上面的例子演示了我正在寻找的行为,但我的情况稍微有些困难:我的容器包含对象,每个对象都嵌入一个大型数组。我想重新排序容器的项目而不执行深层复制。这样做的最佳方式是什么?

1 个答案:

答案 0 :(得分:3)

是。算法中有rotate

对于您更新的问题,您可以正确地想要保持指向数组中对象的指针并旋转它们。或者您可以尝试list并使用内部swap方法,该方法&#34;不会对单个元素调用任何移动,复制或交换操作。&#34;或swap列表的专业化