我想从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_copy和insert.有更好/更快的方式吗?我不喜欢remove_copy的是,我必须指定一个value应该不会被删除.我想移动所有这些,我不确定我是否可以指定一个value永远不会发生的vector.
你想要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)
| 归档时间: |
|
| 查看次数: |
70 次 |
| 最近记录: |