std::initializer list

提供: C++入門
2013年11月2日 (土) 23:20時点におけるDaemon (トーク | 投稿記録)による版 (ページの作成:「std::initializer_list とは、C++11で追加されたクラスで初期化リストを扱うための機能を提供します。 '''読み方''' ;[[std::i...」)

(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)
移動: 案内検索
スポンサーリンク

std::initializer_list とは、C++11で追加されたクラスで初期化リストを扱うための機能を提供します。

読み方

std::initializer_list
えすてぃーでぃー いにしゃらいざー りすと

概要

配列や構造体は、初期化リストを扱えました。

int a[] = {1,2,3};
struct Foo {int i; int j;};
Foo foo = { 123, 456 };

しかしながら、クラスでは、上記のような構文で初期化できませんでした。 C++11では、クラスでも初期化リストを扱えるように、std::initializer_listを追加しました。

コンパイラ

  • clang++ 3.3 では、使用できません。
  • gcc49 を使用しました。

ヘッダファイル

#include <initializer_list>

initializer_list1.cpp の例

コンストラクタで初期化リストを受け取り、std::vectorに入れる例です。std::vectorには、従来通りの方法で入れています。

ソースコード initializer_list1.cpp

#include <iostream>
#include <vector>
#include <initializer_list>
using namespace std;
 
class C {
        vector<int> v;
        public:
        C (std::initializer_list<int> list) {
                for (auto it: list) {
                        v.push_back(it);
                }
        }
        friend std::ostream& operator<<(std::ostream& os, const C& c) {
                for (auto it: c.v) {
                        os << it << " ";
                }
                return os;
        }
};
 
int main(int argc, char const* argv[])
{
        C c = {1,2,3};
        cout << c << endl;
        return 0;
}

コンパイル

g++49 -std=c++11 initializer_list1.cpp -o initializer_list1

実行例

% ./initializer_list1
1 2 3


関連項目




スポンサーリンク