[C++]for文を使ってVectorを逆順でループするには?

C++

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

for文を使ってVectorを後ろからループする方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

for文を使ってVectorを逆順でループするには、rbegin()とrend()を使います。

まず、for文のループ変数をVectorから呼び出したrbegin()の値で初期化します。

for文の終了条件にループ変数がVectorから呼び出したrend()の値でないことを指定し、ループの最後に行う処理でループ変数を「+1」します。

そして、for文の{}内にループ処理を指定します。

ループ処理では、Vectorの要素をループ変数の参照で取得します。

//myVec = 対象のvector
for (auto i = myVec.rbegin(); i != myVec.rend(); ++i) {
    //ループ処理
}

上記のfor文は、Vectorを逆順でループします。

rbegin()は逆順のイテレータの最初の要素(通常のイテレータの最後の要素)、rend()は逆順のイテレータの最後の要素(通常のイテレータの先頭の要素)を取得します。

使用例

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

int main(void){
    
    vector<int> nums = { 1, 2, 3, 4, 5, 6 };
    
    for (auto i = nums.rbegin(); i != nums.rend(); ++i) {
        cout << *i << " ";
    }
    
    return 0;
}
出力:
6 5 4 3 2 1 

コメント

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