例如,我有一个向量,我想将位置1的元素移动到新的位置3.
std::vector<int> v;
for (int i = 0; i < 5; ++i)
v.push_back(i);
// move element at position 1 to 3
// old vector: 0 1 2 3 4
// after move: 0 2 3 1 4
答案 0 :(得分:3)
std::rotate( v.begin() + 1, v.begin() + 2, v.begin() + 4 );
// ^^^^^ 1 ^^^^^ 2 ^^^^^ 3
// 1 - beginning of the range to rotate - points to '1'
// 2 - element that will be brought to beginning after rotation - points to '2'
// 3 - one past end of range to rotate - points to '4'
答案 1 :(得分:1)
使用rotate algorithm。这将旋转给定范围内的元素。
答案 2 :(得分:1)
你可以使用std :: swap两次。
std::swap(v[1], v[2]);
std::swap(v[2],v[3]);
鉴于
0 1 2 3 4
首次交换:
0 2 1 3 4
第二次交换
0 2 3 1 4
你得到你想要的东西
如果您指定范围[i,j]
,则可以将这些内容放入函数中并通过循环v[i]
到v[j]
来应用交换。