C++でvectorを初期化する4つの方法を徹底解説【サンプルコード付き】
C++のstd::vectorには、さまざまな初期化方法があります。用途や場面に応じて使い分けることで、より読みやすく効率的なコードを書くことができます。本記事では、代表的な4つの初期化方法を、アルゴリズム・サンプルコード・実行結果つきで順番に紹介します。
1) push_back()メソッドによる初期化
まず空のvectorを宣言し、push_back()関数を使って要素を1つずつ末尾に追加していく方法です。実行時に動的に要素を組み立てたい場合に便利です。
アルゴリズム
Begin
vector型の変数vを宣言する。
push_back()関数を呼び出して、値をvへ挿入する。
「Vector elements:」という文字列を出力する。
範囲for文(for (int a : v))ですべての要素を出力する。
End.
サンプルコード
#include<iostream>
#include <bits/stdc++.h>
using namespace std;
int main() {
vector<int> v;
v.push_back(6);
v.push_back(7);
v.push_back(10);
v.push_back(12);
cout<<"Vector elements:"<<endl;
for (int a : v)
cout << a << " ";
return 0;
}
実行結果
Vector elements: 6 7 10 12
2) 初期化子リストで配列のように初期化する
C++11以降では、波括弧 { } を使った初期化子リストにより、配列と同じ感覚でvectorを初期化できます。最もシンプルで直感的な方法です。
アルゴリズム
Begin
vector型の変数vを作成する。
配列と同じ形式でvを初期化する。
要素を出力する。
End.
サンプルコード
#include <bits/stdc++.h>
using namespace std;
int main() {
vector<int> v{ 1, 2, 3, 4, 5, 6, 7 };
cout<<"vector elements:"<<endl;
for (int a : v)
cout << a << " ";
return 0;
}
実行結果
vector elements: 1 2 3 4 5 6 7
3) 別のvectorから初期化する
既存のvectorのイテレータ(begin()〜end())をコンストラクタに渡すことで、その内容をコピーした新しいvectorを作成できます。元のvectorと同じ内容を持つ複製が必要なときに役立ちます。
アルゴリズム
Begin
vector型の変数v1を作成する。
配列形式でv1を初期化する。
v1を使ってv2を初期化する。
要素を出力する。
End.
サンプルコード
#include<iostream>
#include <bits/stdc++.h>
using namespace std;
int main() {
vector<int> v1{ 1, 2, 3, 4, 5, 6, 7 };
vector<int> v2(v1.begin(), v1.end());
cout<<"vector elements:"<<endl;
for (int a : v2)
cout << a << " ";
return 0;
}
実行結果
vector elements: 1 2 3 4 5 6 7
4) サイズと要素の値を指定して初期化する
コンストラクタに「要素数」と「初期値」を指定すると、すべての要素が同じ値で埋められたvectorを作成できます。同じ値を繰り返し格納したい場合に非常に便利です。
アルゴリズム
Begin
変数sを初期化する。
サイズs、すべての値が7であるvector型の変数vを作成する。
要素を出力する。
End.
サンプルコード
#include<iostream>
#include <bits/stdc++.h>
using namespace std;
int main() {
int s= 5;
vector<int> v(s, 7);
cout<<"vector elements:"<<endl;
for (int a : v)
cout << a << " ";
return 0;
}
実行結果
vector elements: 7 7 7 7 7
まとめ
C++におけるvectorの初期化には、①push_back()で1つずつ追加する方法、②初期化子リストで配列のように初期化する方法、③既存のvectorからコピーする方法、④サイズと初期値を指定する方法の4つがあります。それぞれ特徴が異なるため、プログラムの目的に応じて最適な方法を選びましょう。
-
C++で変数を宣言するには?宣言と定義の違いをわかりやすく解説
C++では「宣言」と「定義」がしばしば混同されます。この2つの違いを正しく理解することは、プログラムの構造を把握するうえで非常に重要です。 宣言とは何か? 宣言とは、プログラム内で使用する変数・ユーザー定義型・関数について、その型やサイズ(関数の場合は引数の型やサイズ)をコンパイラに伝えることを指します。宣言だけでは、メモリ上に領域は一切確保されないという点がポイントです。 宣言の例 extern int a; // 変数aを定義せずに宣言する struct _tagExample { int a; int b; }; // 構造体を宣言する in
-
C++のnew演算子で確保したメモリを初期化する方法
C++のnew演算子は、メモリの「割り当て」を行うためのものであり、「初期化」まで自動的に行うものではありません。しかし、int型の配列をnewで動的に確保し、すべての要素をデフォルト値(intの場合は0)で初期化したい場合には、次のような構文を使用できます。基本構文:デフォルト初期化new int[10]();ポイントは、型名の後に空のかっこ () を付けることです。これにより、確保されたすべての要素がデフォルト初期化(ゼロクリア)されます。なお、この書き方では (0) のように具体的な値を指定したり、他の式を渡したりすることはできません。あくまで「デフォルト値での初期化」専用の構文である点