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

C++

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

std::copy()でVectorの末尾からN個の要素を取得する方法を紹介します。

スポンサーリンク

方法

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

std::copy()でVectorの末尾からN個の要素を取得するには、3つの引数を使います。

まず、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

コメント

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