C++ で vector を初期化する方法
胡金庫
2023年10月12日
この記事では、C++ で vector
を定数値で初期化する方法を説明します。
初期化リスト記法を使用して C++ の ベクトル
要素に定数値を割り当てる
このメソッドは C++11 スタイルからサポートされており、変数 vector
を定数で初期化する比較的読みやすい方法です。値は braced-init-list
として指定され、その前に代入演算子が付けられます。この表記法はしばしばコピーリスト初期化と呼ばれます。
#include <iostream>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;
int main() {
vector<string> arr = {"one", "two", "three", "four"};
for (const auto &item : arr) {
cout << item << "; ";
}
return EXIT_SUCCESS;
}
出力:
one; two; three; four;
別の方法として、以下のコードブロックに示すように、vector
変数を宣言する際にイニシャライザリストのコンストラクタ呼び出しを使用する方法があります。
#include <iostream>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;
int main() {
vector<string> arr{"one", "two", "three", "four"};
for (const auto &item : arr) {
cout << item << "; ";
}
return EXIT_SUCCESS;
}
プリプロセッサマクロは、イニシャライザリスト記法を実装する別の方法です。この例では、INIT
オブジェクトライクなマクロとして定数要素の値を定義し、次のように vector
変数に代入します。
#include <iostream>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;
#define INIT \
{ "one", "two", "three", "four" }
int main() {
vector<string> arr = INIT;
for (const auto &item : arr) {
cout << item << "; ";
}
return EXIT_SUCCESS;
}
C++11 の初期化リスト構文は非常に強力なツールであり、次のコードサンプルに示すように、複雑な構造体の vector
をインスタンス化するために利用できます。
#include <iostream>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;
struct cpu {
string company;
string uarch;
int year;
} typedef cpu;
int main() {
vector<cpu> arr = {{"Intel", "Willow Cove", 2020},
{"Arm", "Poseidon", 2021},
{"Apple", "Vortex", 2018},
{"Marvell", "Triton", 2020}};
for (const auto &item : arr) {
cout << item.company << " - " << item.uarch << " - " << item.year << endl;
}
return EXIT_SUCCESS;
}
出力:
Intel - Willow Cove - 2020
Arm - Poseidon - 2021
Apple - Vortex - 2018
Marvell - Triton - 2020
著者: 胡金庫