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