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

C++

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

配列(array)を反転して逆順にする方法を紹介します。

スポンサーリンク

方法

配列(array)を反転して逆順にする方法は、2つあります。

forループ

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

まず、配列を要素数の半分でループします。

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

//myArray = 対象の配列

int count = size(myArray); //配列の要素数を取得

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

上記のforループは、配列を反転して逆順にします。

使用例

#include <iostream>
using namespace std;

int main(void){

    int numbers[6] = {1, 2, 3, 4, 5, 6};
    
    int count = size(numbers);
    for (int i = 0; i < count / 2; i++) {
        int temp = numbers[i];
        numbers[i] = numbers[count - i -1];
        numbers[count - i - 1] = temp;
    }
    
    for (int i = 0; i < count; ++i) {
        cout << numbers[i] << " ";
    }
}
出力:
6 5 4 3 2 1 

reverse()

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

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

reverse()の第1引数にbegin()、第2引数にend()を指定します。

begin()とend()の引数に対象の配列を指定します。

//myArray = 対象の配列
reverse(begin(myArray), end(myArray));

上記のreverse()は、配列を反転して逆順にします。

使用例

#include <iostream>
using namespace std;

int main(void){

    int numbers[6] = {1, 2, 3, 4, 5, 6};
    
    reverse(begin(numbers), end(numbers));
    
    for (int i = 0; i < size(numbers); ++i) {
        cout << numbers[i] << " ";
    }
}
出力:
6 5 4 3 2 1 

まとめ

配列(array)を反転して逆順にする方法は、次の2つです。

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

コメント

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