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

提供: C++入門
移動: 案内検索
行1: 行1:
[[std::vector]] のコンストラクタについて。
+
[[std::vector::vector]]は、[[std::vector]] のコンストラクタです。[[std::vector]]の初期化をします。
  
 
__TOC__
 
__TOC__
行6: 行6:
 
[[std::vector::vector]] は、[[std::vector]]のコンストラクタです。
 
[[std::vector::vector]] は、[[std::vector]]のコンストラクタです。
 
[[std::vector::vector]] の使い方をいくつか示します。
 
[[std::vector::vector]] の使い方をいくつか示します。
 +
[[C++11]]では、コンテナの初期化もできるようになりました。
  
 
[[C++11]]の場合
 
[[C++11]]の場合

2013年12月28日 (土) 16:21時点における版

std::vector::vectorは、std::vector のコンストラクタです。std::vectorの初期化をします。

概要

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

C++11の場合

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

std::vectorをコンストラクタで初期化する例

ソースコード vector_constructor_1.cpp

#include <iostream>
#include <vector>
#include <boost/foreach.hpp>
using namespace std;
void
dump (vector<int> &v) {
        BOOST_FOREACH(int x, v) {
                cout << x << endl;
        }
}
 
int
main(int argc, char const* argv[])
{
 
        vector<int>     v(3, 100);
        dump (v);
 
        return 0;
}

コンパイル

g++  -I/usr/local/include vector_constructor_1.cpp -o vector_constructor_1

実行例

% ./vector_constructor_1
100
100
100

イテレータを使用した初期化の例

ソースコード vector_constructor_2.cpp

#include <iostream>
#include <vector>
#include <boost/foreach.hpp>
using namespace std;
void
dump (vector<int> &v) {
        BOOST_FOREACH(int x, v) {
                cout << x << endl;
        }
}
 
int
main(int argc, char const* argv[])
{
        vector<int>     v1(3, 100);
        vector<int>     v2(v1.begin(), v1.end());
        dump (v2);
 
        return 0;
}

コンパイル

g++  -I/usr/local/include vector_constructor_2.cpp -o vector_constructor_2

実行例

% ./vector_constructor_2
100
100
100

ほかのstd::vectorをコンストラクタでコピーする例

ソースコード vector_constructor_3.cpp

#include <iostream>
#include <vector>
#include <boost/foreach.hpp>
using namespace std;
void
dump (vector<int> &v) {
        BOOST_FOREACH(int x, v) {
                cout << x << endl;
        }
}
 
int
main(int argc, char const* argv[])
{
 
        vector<int>     v1(3, 100);
        vector<int>     v2(v1);
        dump (v2);
 
        return 0;
}

コンパイル

g++  -I/usr/local/include vector_constructor_3.cpp -o vector_constructor_3

実行例

% ./vector_constructor_3
100
100
100

配列を利用した初期化の例

ソースコード vector_constructor_4.cpp

#include <iostream>
#include <vector>
#include <boost/foreach.hpp>
using namespace std;
void
dump (vector<int> &v) {
        BOOST_FOREACH(int x, v) {
                cout << x << endl;
        }
}
 
int
main(int argc, char const* argv[])
{
        int     array[] = {1,2,3};
        vector<int>     v(array, array + (sizeof(array)/sizeof(int)) );
        dump (v);
 
        return 0;
}

コンパイル

g++  -I/usr/local/include vector_constructor_4.cpp -o vector_constructor_4

実行例

% ./vector_constructor_4
1
2
3

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

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

vector<int> v{1,2,3};

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

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

詳細については、std::vector シンプルな例をご参照ください。

関連項目