[C++]Vectorを反転して逆順にするには?

C++

どうも、ちょげ(@chogetarou)です。

Vectorを反転して逆順にする方法を紹介します。

スポンサーリンク

方法

Vectorを反転して逆順にする方法は、2つあります。

forループ

ひとつは、forループを使う方法です。

まず、Vector(ベクタ)を要素数の半分でループします。

そして、for文の処理で、「ループ変数のインデックスの要素」と「要素数を1とループ変数で引いた値のインデックスの要素」を入れ替えます。

//myVec = 対象のベクタ

int count = myVec.size();; //ベクタの要素数を取得

for (int i = 0; i < count / 2; i++) { //ベクタの要素数の半分でループ
        //要素を入れ替える
        int temp = myVec[i];
        myVec[i] = myVec[count - i -1];
        myVec[count - i - 1] = temp;
}

上記のforループは、Vector(ベクタ)を反転して逆順にします。

使用例

#include <iostream>
#include <vector>
using namespace std;

int main(void){
    
    vector<int> nums = { 1, 2, 3, 4, 5, 6 };
    
    int count = nums.size();
    for (int i = 0; i < count / 2; i++) {
        int temp = nums[i];
        nums[i] = nums[count - i -1];
        nums[count - i - 1] = temp;
    }
    
    for (int i = 0; i < size(nums); ++i) {
        cout << nums[i] << " ";
    }
    
    return 0;
}
出力:
6 5 4 3 2 1 

reverse()

もうひとつは、reverse()を使う方法です。

まず、reverse()を呼び出します。

そして、reverse()の第1引数にVectorから呼び出したbegin()、第2引数にVectorから呼び出したend()を指定します。

//myVec = 対象のvector
reverse(myVec.begin(), myVec.end());

上記のreverse()は、Vector(ベクタ)を反転して逆順にします。

使用例

#include <iostream>
#include <vector>
using namespace std;

int main(void){
    
    vector<int> nums = { 1, 2, 3, 4, 5, 6 };
    
    reverse(nums.begin(), nums.end());
    
    for (int i = 0; i < size(nums); ++i) {
        cout << nums[i] << " ";
    }
    
    return 0;
}
出力:
6 5 4 3 2 1 

まとめ

Vectorを反転して逆順にする方法は、次の2つです。

  • forループを使う方法
  • reverse()を使う方法
    reverse(myVec.begin(), myVec.end());

コメント

タイトルとURLをコピーしました