2

たとえば、ベクトルがあり、位置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
4

3 に答える 3

3

std::rotateを使用する

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'          
于 2013-03-26T02:59:10.423 に答える
1

回転アルゴリズムを使用します。これにより、指定された範囲で要素が回転します。

于 2013-03-26T02:58:59.843 に答える
1

std::swapを2回使用できます。

 std::swap(v[1], v[2]);
 std::swap(v[2],v[3]);

与えられた

0 1 2 3 4

最初のスワップ:

0 2 1 3 4

2回目のスワップ

0 2 3 1 4

あなたはあなたが望むものを手に入れます

範囲を指定する[i,j]と、これらを関数に入れて、にループすることでスワップを適用できv[i]ますv[j]

于 2013-03-26T02:59:07.780 に答える