どうも、ちょげ(@chogetarou)です。
Vectorの末尾からN個の要素を取得する方法を紹介します。
方法

Vectorの後ろからN個の要素を取得する方法は、2つあります。
コンストラクタ
1つは、コンストラクタを使う方法です。
まず、取得した要素を格納するVectorの変数を宣言します。
そして、コンストラクタの第1引数に対象のVectorのend()を取得する要素数で引いた値、第2引数に対象のVectorのend()を指定します。
//lastN=任意の変数名, vect=任意のVector, n=取得する要素数
vector<T> lastN(vect.end() - n, vect.end());
上記のコンストラクタは、end()を呼び出したVectorの末尾からN個の要素を取得します。
使用例
#include <iostream>
#include <vector>
using namespace std;
int main(void){
vector<int> num = { 1, 2, 3, 4, 5, 6 };
int n = 3;
vector<int> lastN(num.end() - n, num.end());
for (int &i: lastN) {
cout << i << endl;
}
}
出力:
4
5
6
copy()
もう1つは、copy()を使う方法です。
まず、Vectorの変数を宣言します。
変数の宣言時、コンストラクタの引数に取得する要素数を指定します。
次に、copy()を呼び出します。
copy()の第1引数に対象のVectorのend()から取得する要素数を引いた値、第2引数に対象のVectorのend()を指定します。
cop()の第3引数に宣言した変数のbegin()を指定します。
//lastN=任意の変数名, vect=対象のVector, n=取得する要素数
vector<T> lastN(n);
copy(vect.end() - n, vect.end(), lastN.begin());
上記のcopy()は、宣言した変数にend()を呼び出したVectorの末尾からN個の要素を格納します。
使用例
#include <iostream>
#include <vector>
using namespace std;
int main(void){
vector<int> num = { 1, 2, 3, 4, 5, 6 };
int n = 3;
vector<int> lastN(n);
copy(num.end() - n, num.end(), lastN.begin());
for (int &i: lastN) {
cout << i << endl;
}
}
出力:
4
5
6
まとめ
Vectorの後ろからN個の要素を取得する方法は、次の2つです。
- コンストラクタを使う方法
vector<T> lastN(vect.end() - n, vect.end());
- copy()を使う方法
vector<T> lastN(n);
copy(vect.end() - n, vect.end(), lastN.begin());
コメント