C++ 重新定位向量的一部分
我想从C++ 重新定位向量的一部分,c++,vector,std,C++,Vector,Std,我想从向量(删除项目)中取出一个范围,并将它们以相同的顺序插入到同一向量中,但插入到其他位置 示例: 0 1 2 3 4 5 Original vector: A B C D E F 取范围1-3并插入(在)4之后 0 1 2 3 4 5 Resulting vector: A E B C D F 我可能可以使用for循环,或者使用and来实现这一点。有更好/更快的方法吗?我不喜欢remove\u copy的地方是我
向量
(删除项目)中取出一个范围,并将它们以相同的顺序插入到同一向量中,但插入到其他位置
示例:
0 1 2 3 4 5
Original vector: A B C D E F
取范围1-3
并插入(在)4
之后
0 1 2 3 4 5
Resulting vector: A E B C D F
我可能可以使用
for
循环,或者使用and来实现这一点。有更好/更快的方法吗?我不喜欢remove\u copy
的地方是我必须指定一个不应该删除的值。我想移动所有这些变量,但我不确定是否可以指定一个在向量中从未出现过的值
#包括
#包括
//| | |您可以使用std::copy_backward
复制对象(复制,不移动),然后使用std::vector::erase
删除原始对象
例如:
std::copy_backward(v.begin()+1, v.begin()+3, v.begin()+4);
v.erase(v.begin()+1, v.begin()+3);
这个“其他位置”是进入同一媒介(但不同的地方)还是没有?@Cornstales是的,对不起,我忘了说那个。我更新了我的问题。如果是单独的向量,我想可以用它来完成。谢谢!我不知道rotate
会这样做。
std::copy_backward(v.begin()+1, v.begin()+3, v.begin()+4);
v.erase(v.begin()+1, v.begin()+3);