重新定位矢量的一部分

Jaw*_*wap 2 c++ vector std

我想从a vector(删除项目)中取出一个范围,然后在同一个向量中以相同的顺序插入它们,但是在另一个位置.

例:

                  0 1 2 3 4 5
Original vector:  A B C D E F
Run Code Online (Sandbox Code Playgroud)

取范围1-3并插入(后)4.

                  0 1 2 3 4 5
Resulting vector: A E B C D F
Run Code Online (Sandbox Code Playgroud)


我可以用for循环,或使用remove_copyinsert.有更好/更快的方式吗?我不喜欢remove_copy的是,我必须指定一个value应该不会被删除.我想移动所有这些,我不确定我是否可以指定一个value永远不会发生的vector.

Ker*_* SB 9

你想要std::rotate:

#include <vector>
#include <algorithm>

//                           |<---------->|<->|          <-- rotate this range
std::vector<char> v = { 'A', 'B', 'C', 'D', 'E', 'F' };

std::rotate(v.begin() + 1, v.begin() + 4, v.begin() + 5);
Run Code Online (Sandbox Code Playgroud)