[C++]Vectorの後ろからN個の要素を取得するには?

C++

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

Vectorの末尾からN個の要素を取得する方法を紹介します。

スポンサーリンク

方法

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

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個の要素を取得します。

取得する要素数がVector自体の要素数を超えた場合は、エラーが発生します。

使用例

#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個の要素を格納します。

取得する要素数がVector自体の要素数を超えた場合は、エラーが発生します。

使用例

#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());

コメント

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