どうも、ちょげ(@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());
コメント