像在Python中一样包装C++向量

Lev*_*viX 2 c++ python iterator list

我想在Python中"包装"C++中的列表/向量.基本上我想将元素从列表末尾切换到列表的开头.我不想明确地制作新的清单.

在Python中我可以写如下:

my_list = [1, 2, 3, 4, 5]
#[1, 2, 3, 4, 5]

q = collections.deque(my_list)
q.rotate(3)
#deque([3, 4, 5, 1, 2])
Run Code Online (Sandbox Code Playgroud)

我在STL看了deque,但是我没有看到任何类似旋转的东西.似乎应该有一个简单的方法来使用迭代器或类似的东西.

Ker*_* SB 11

您正在寻找std::rotate标准库,它提供了一种使用迭代器执行此操作的简便方法.

#include <algorithm>

std::vector<T> v /* = populate() */;
std::rotate(v.begin(), v.begin() + 3, v.end());
Run Code Online (Sandbox Code Playgroud)

可以使用任何前向迭代器,因此这适用于大多数(序列)容器.