KONOTI

この世界で得た知識・情報まとめ

【C++】vectorで動的配列を実現する方法

  • 作成日:2024/11/10

C++ C++で可変長な配列を使いたい場合、vectorを使うと便利です。

vectorとは

vectorとはC++で動的配列のような機能を実現する機能であり、標準クラスで定義されているクラスです。

通常、配列は宣言時に要素数を決めておく必要があり、後から要素数の変更などはできません。 しかし、vectorを使えば配列の要素を後から追加・削除したりするなど、動的な配列を実現できるのです。

new演算子でも同じようなことができますが、vectorのほうが簡単だと思います。

使い方

vectorをインクルードして使います。

宣言と要素へのアクセス

まずはvectorの宣言と各要素へのアクセス方法です。 vectorは宣言時に<>の中に使いたい配列の型を指定します。 例えば、int型で宣言してみます。

C++

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    //3つの要素を定義
    vector<int> vec(3);

    //とりあえず定義のみ
    vector<int> vec2;

    //要素への代入
    vec[0]= 10;
    vec[1]= 20;
    vec[2]= 30;

    //出力
    cout << vec[0] << endl;
    cout << vec[1] << endl;
    cout << vec[2] << endl;

    return 0;
}

                                    

宣言時の要素数は()の中に指定します。各要素へのアクセスは[]で指定します。先頭は0です。

実行結果

10
20
30

この例はint型ですが、独自に作成したクラス型も指定できます。

初期化

宣言時に初期化する場合は{}で指定します。要素を3つ定義して、かつ初期化設定もする例です。

C++


#include <iostream>
#include <vector>

using namespace std;

int main()
{
    //vectorを初期化して定義(3つの要素を定義)
    vector<int> vec{10,20,30};

    //出力
    cout << vec[0] << endl;
    cout << vec[1] << endl;
    cout << vec[2] << endl;

    return 0;
}
                                    
実行結果

10
20
30

要素の追加(末尾)

配列の末尾に要素を追加する場合はpush_back関数またはemplace_back関数を使います。

どちらも動作は同じですが、emplace_back関数のほうが処理速度が速くなることがあります。 引数には追加したい値を指定します。

C++

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    // vectorの定義(3つの要素を定義)
    vector<int> vec{10, 20, 30};

    // 末尾に要素を追加する
    vec.push_back(40);
    vec.emplace_back(50);

    // 出力
    cout << vec[0] << endl;
    cout << vec[1] << endl;
    cout << vec[2] << endl;
    cout << vec[3] << endl;
    cout << vec[4] << endl;

    return 0;
}
                                    
実行結果

10
20
30
40
50

要素の挿入

配列の途中に要素を追加する場合はinsert関数またはemplace関数を使います。動作はほぼ同じです。

第1引数には位置を、第2引数には値を指定します。

C++

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    // vectorの定義(3つの要素を定義)
    vector<int> vec{10, 20, 30};

    //先頭から2番目の位置へ挿入
    vec.insert(vec.begin()+1,15);

    // 出力
    cout << vec[0] << endl;
    cout << vec[1] << endl;
    cout << vec[2] << endl;
    cout << vec[3] << endl;

    return 0;
}
                                

位置の指定はbegin()を使い、先頭からの位置を指定します。 begin()を使わずに直接数値だけで指定すると構文エラーとなります。

実行結果

10
15
20
30

要素の削除(末尾)

末尾の要素を削除する場合はpop_back関数を使います。

C++


#include <iostream>
#include <vector>

using namespace std;

int main()
{
    // vectorの定義(3つの要素を定義)
    vector<int> vec{10, 20, 30};

    //末尾の要素を削除
    vec.pop_back();

    return 0;
}
                                

要素の削除

指定した要素を削除したい場合はerase関数を使います。

insert関数同様に、削除したい位置の指定はbegin()で指定します。

C++

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    // vectorの定義(3つの要素を定義)
    vector<int> vec{10,20,30,40,50};

    //先頭から2番目要素を削除
    vec.erase(vec.begin()+2);
    
    // 出力
    for(int i = 0; i < vec.size();i++)
    {
        cout << vec[i] << endl;
    }

    return 0;
}
                                
実行結果

10
20
40
50

この記事のシェアはこちらから

当サイトについて

当サイト(KONOTI)は、日常生活において運営者が得た情報をご紹介するサイトです。 ジャンルに多少の偏りはありますが、基本的には様々な情報を取り扱っていく予定です。

Contact

当サイトへのご連絡は以下よりお願いします。

PAGE TOP ▲

© Copyright 2024 KONOTI