C++で可変長な配列を使いたい場合、vectorを使うと便利です。
vectorとはC++で動的配列のような機能を実現する機能であり、標準クラスで定義されているクラスです。
通常、配列は宣言時に要素数を決めておく必要があり、後から要素数の変更などはできません。 しかし、vectorを使えば配列の要素を後から追加・削除したりするなど、動的な配列を実現できるのです。
new演算子でも同じようなことができますが、vectorのほうが簡単だと思います。
vectorをインクルードして使います。
まずはvectorの宣言と各要素へのアクセス方法です。 vectorは宣言時に<>の中に使いたい配列の型を指定します。 例えば、int型で宣言してみます。
#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つ定義して、かつ初期化設定もする例です。
#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関数のほうが処理速度が速くなることがあります。 引数には追加したい値を指定します。
#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引数には値を指定します。
#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関数を使います。
#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()で指定します。
#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)は、日常生活において運営者が得た情報をご紹介するサイトです。 ジャンルに多少の偏りはありますが、基本的には様々な情報を取り扱っていく予定です。