「std::vector::vector」の版間の差分
提供: C++入門
(→関連項目) |
|||
行1: | 行1: | ||
− | |||
− | |||
− | |||
− | |||
[[std::vector]] のコンストラクタについて。 | [[std::vector]] のコンストラクタについて。 | ||
行8: | 行4: | ||
== 概要 == | == 概要 == | ||
− | |||
[[std::vector::vector]] は、[[std::vector]]のコンストラクタです。 | [[std::vector::vector]] は、[[std::vector]]のコンストラクタです。 | ||
[[std::vector::vector]] の使い方をいくつか示します。 | [[std::vector::vector]] の使い方をいくつか示します。 | ||
− | [[C++11]] | + | [[C++11]]の場合 |
<syntaxhighlight lang="cpp"> | <syntaxhighlight lang="cpp"> | ||
行48: | 行43: | ||
== std::vectorをコンストラクタで初期化する例 == | == std::vectorをコンストラクタで初期化する例 == | ||
− | |||
=== ソースコード vector_constructor_1.cpp === | === ソースコード vector_constructor_1.cpp === | ||
− | |||
<syntaxhighlight lang="cpp"> | <syntaxhighlight lang="cpp"> | ||
#include <iostream> | #include <iostream> | ||
行75: | 行68: | ||
=== コンパイル === | === コンパイル === | ||
− | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
g++ -I/usr/local/include vector_constructor_1.cpp -o vector_constructor_1 | g++ -I/usr/local/include vector_constructor_1.cpp -o vector_constructor_1 | ||
行81: | 行73: | ||
=== 実行例 === | === 実行例 === | ||
− | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
% ./vector_constructor_1 | % ./vector_constructor_1 | ||
行88: | 行79: | ||
100 | 100 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
== イテレータを使用した初期化の例 == | == イテレータを使用した初期化の例 == | ||
− | |||
=== ソースコード vector_constructor_2.cpp === | === ソースコード vector_constructor_2.cpp === | ||
− | |||
<syntaxhighlight lang="cpp"> | <syntaxhighlight lang="cpp"> | ||
#include <iostream> | #include <iostream> | ||
行118: | 行106: | ||
=== コンパイル === | === コンパイル === | ||
− | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
g++ -I/usr/local/include vector_constructor_2.cpp -o vector_constructor_2 | g++ -I/usr/local/include vector_constructor_2.cpp -o vector_constructor_2 | ||
行124: | 行111: | ||
=== 実行例 === | === 実行例 === | ||
− | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
% ./vector_constructor_2 | % ./vector_constructor_2 | ||
行133: | 行119: | ||
== ほかのstd::vectorをコンストラクタでコピーする例 == | == ほかのstd::vectorをコンストラクタでコピーする例 == | ||
− | |||
=== ソースコード vector_constructor_3.cpp === | === ソースコード vector_constructor_3.cpp === | ||
− | |||
<syntaxhighlight lang="cpp"> | <syntaxhighlight lang="cpp"> | ||
#include <iostream> | #include <iostream> | ||
行161: | 行145: | ||
=== コンパイル === | === コンパイル === | ||
− | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
g++ -I/usr/local/include vector_constructor_3.cpp -o vector_constructor_3 | g++ -I/usr/local/include vector_constructor_3.cpp -o vector_constructor_3 | ||
行167: | 行150: | ||
=== 実行例 === | === 実行例 === | ||
− | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
% ./vector_constructor_3 | % ./vector_constructor_3 | ||
行176: | 行158: | ||
== 配列を利用した初期化の例 == | == 配列を利用した初期化の例 == | ||
− | |||
=== ソースコード vector_constructor_4.cpp === | === ソースコード vector_constructor_4.cpp === | ||
− | |||
<syntaxhighlight lang="cpp"> | <syntaxhighlight lang="cpp"> | ||
#include <iostream> | #include <iostream> | ||
行209: | 行189: | ||
=== 実行例 === | === 実行例 === | ||
− | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
% ./vector_constructor_4 | % ./vector_constructor_4 | ||
行216: | 行195: | ||
3 | 3 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
+ | == 初期化リストで初期化する == | ||
+ | [[C++11]]では、[[std::initializer_list]]が実装され、初期化リストでコンテナが初期化できるようになりました。 | ||
+ | <syntaxhighlight lang="cpp"> | ||
+ | vector<int> v{1,2,3}; | ||
+ | </syntaxhighlight> | ||
+ | このコードをコンパイルするには、[[C++11]]に対応した[[g++]]などのコンパイラが必要です。 | ||
+ | コンパイルする場合には、-std=c++11などのオプションが必要です。 | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | 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 | ||
+ | </syntaxhighlight> | ||
+ | 詳細については、[[std::vector シンプルな例]]をご参照ください。 | ||
== 関連項目 == | == 関連項目 == | ||
行224: | 行216: | ||
* [[for]] | * [[for]] | ||
* [[auto]] | * [[auto]] | ||
+ | <!-- vim: filetype=mediawiki --> |
2013年12月28日 (土) 01:05時点における版
std::vector のコンストラクタについて。
目次
概要
std::vector::vector は、std::vectorのコンストラクタです。 std::vector::vector の使い方をいくつか示します。
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 シンプルな例をご参照ください。