C++
 Computer >> コンピューター >  >> プログラミング >> C++

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つがあります。それぞれ特徴が異なるため、プログラムの目的に応じて最適な方法を選びましょう。

  1. C++で変数を宣言するには?宣言と定義の違いをわかりやすく解説

    C++では「宣言」と「定義」がしばしば混同されます。この2つの違いを正しく理解することは、プログラムの構造を把握するうえで非常に重要です。 宣言とは何か? 宣言とは、プログラム内で使用する変数・ユーザー定義型・関数について、その型やサイズ(関数の場合は引数の型やサイズ)をコンパイラに伝えることを指します。宣言だけでは、メモリ上に領域は一切確保されないという点がポイントです。 宣言の例 extern int a; // 変数aを定義せずに宣言する struct _tagExample { int a; int b; }; // 構造体を宣言する in

  2. C++のnew演算子で確保したメモリを初期化する方法

    C++のnew演算子は、メモリの「割り当て」を行うためのものであり、「初期化」まで自動的に行うものではありません。しかし、int型の配列をnewで動的に確保し、すべての要素をデフォルト値(intの場合は0)で初期化したい場合には、次のような構文を使用できます。基本構文:デフォルト初期化new int[10]();ポイントは、型名の後に空のかっこ () を付けることです。これにより、確保されたすべての要素がデフォルト初期化(ゼロクリア)されます。なお、この書き方では (0) のように具体的な値を指定したり、他の式を渡したりすることはできません。あくまで「デフォルト値での初期化」専用の構文である点