「std::list::list」の版間の差分

提供: C++入門
移動: 案内検索
(ページの作成:「std::list::listは、C++STL コンテナstd::listコンストラクタです。std::listの初期化をします。 '''読み方''...」)
 
(相違点なし)

2014年7月12日 (土) 13:34時点における最新版

std::list::listは、C++STL コンテナstd::listコンストラクタです。std::listの初期化をします。

読み方

std::list::list
えすてぃーでぃー りすと りすと

概要

std::list::list は、std::listのコンストラクタです。std::list::list の使い方をいくつか示します。 C++11では、コンテナの初期化もできるようになりました。


C++11の場合

// default (1)	
 
explicit list (const allocator_type& alloc = allocator_type());
 
// fill (2)	
 
explicit list (size_type n);
         list (size_type n, const value_type& val,
                const allocator_type& alloc = allocator_type());
 
// range (3)	
 
template <class InputIterator>
  list (InputIterator first, InputIterator last,
         const allocator_type& alloc = allocator_type());
 
// copy (4)	
 
list (const list& x);
list (const list& x, const allocator_type& alloc);
 
// move (5)	
 
list (list&& x);
list (list&& x, const allocator_type& alloc);
 
// initializer list (6)	
 
list (initializer_list<value_type> il,
       const allocator_type& alloc = allocator_type());

初期化リストで初期化する

C++11では、std::initializer_listが実装され、初期化リストでコンテナが初期化できるようになりました。

list<int> list1{1,2,3};

このコードをコンパイルするには、C++11に対応したg++などのコンパイラが必要です。 コンパイルする場合には、-std=c++11などのオプションが必要です。

初期化リストで初期化する例 list2.cpp

ソースコード list2.cpp

/*
 * list1.cpp
 * Copyright (C) 2014 kaoru <kaoru@bsd>
 */
 
#include <iostream>
#include <list>
using namespace std;
int
main(int argc, char const* argv[])
{
        list<int> list1 = { 1,2,3 };
 
        for (auto x: list1) {
                cout << x << endl;
        }
        return 0;
}

コンパイル

g++49 -std=c++11 -I/usr/local/lib/gcc49/include/c++/ \
-Wl,-rpath=/usr/local/lib/gcc49  list2.cpp -o list2

実行例

% ./list2
1
2
3

指定した個数で同じ値を埋める list_init_fill1.cpp の例

ソースコード list_init_fill1.cpp

コンストラクタの第2引数の値で、第1引数の値だけ初期化します。 5を3を入れる、ということになります。 5を3回、push_back()するのと同義です。

/*
 * list1.cpp
 * Copyright (C) 2014 kaoru <kaoru@bsd>
 */
 
#include <iostream>
#include <list>
using namespace std;
int
main(int argc, char const* argv[])
{
        list<int> list1(3, 5);
 
        for (auto x: list1) {
                cout << x << endl;
        }
        return 0;
}

コンパイル

g++49 -std=c++11 -I/usr/local/lib/gcc49/include/c++/ \
-Wl,-rpath=/usr/local/lib/gcc49  list_init_fill1.cpp -o list_init_fill1

実行例

% ./list_init_fill1
5
5
5


関連項目