std::stack::stack
提供: cppreference.com
| (1) | ||
| explicit stack( const Container& cont = Container() ); |
(C++11以前) | |
| explicit stack( const Container& cont ); |
(C++11およびそれ以降) | |
| explicit stack( Container&& cont = Container() ); |
(2) | (C++11およびそれ以降) |
| stack( const stack& other ); |
(3) | |
| stack( stack&& other ); |
(4) | (C++11およびそれ以降) |
| template< class Alloc > explicit stack( const Alloc& alloc ); |
(5) | (C++11およびそれ以降) |
| template< class Alloc > stack( const Container& cont, const Alloc& alloc ); |
(6) | (C++11およびそれ以降) |
| template< class Alloc > stack( Container&& cont, const Alloc& alloc ); |
(7) | (C++11およびそれ以降) |
| template< class Alloc > stack( const stack& other, const Alloc& alloc ); |
(8) | (C++11およびそれ以降) |
| template< class Alloc > stack( stack&& other, const Alloc& alloc ); |
(9) | (C++11およびそれ以降) |
様々なデータソースから新しいコンテナアダプタのベースとなるコンテナを構築します。
1) ベースとなるコンテナ
c を cont の内容からコピー構築します。 これはデフォルトコンストラクタでもあります (C++11以前)2) ベースとなるコンテナ
c を std::move(cont) からムーブ構築します。 これはデフォルトコンストラクタでもあります (C++11およびそれ以降)3) コピーコンストラクタ。 アダプタは other.c の内容からコピー構築されます。 (暗黙的に宣言)
4) ムーブコンストラクタ。 アダプタは std::move(other.c) から構築されます。 (暗黙的に宣言)
5-9) 以下のコンストラクタは std::uses_allocator<container_type, Alloc>::value == true、つまりベースとなるコンテナがアロケータ対応コンテナの場合のみ定義されます (標準ライブラリのコンテナはすべて対応しています)。
5) c(alloc) によって行われるかのように、
alloc をアロケータとして使用してベースとなるコンテナを構築します。6) c(cont, alloc) によって行われるかのように、
alloc をアロケータとして使用して cont の内容からベースとなるコンテナを構築します。7) c(std::move(cont), alloc) によって行われるかのように、
alloc をアロケータとして使用して cont の内容からムーブセマンティクスを用いてベースとなるコンテナを構築します。8) c(other.c, alloc) によって行われるかのように、
alloc をアロケータとして使用して other.c の内容からアダプタを構築します。9) c(std::move(other.c), alloc) によって行われるかのように、
alloc をアロケータとして使用して other の内容からムーブセマンティクスを用いてベースとなるコンテナを構築します。目次 |
[編集] 引数
| alloc | - | ベースとなるコンテナのすべてのメモリ確保のために使用するアロケータ |
| other | - | ベースとなるコンテナを初期化するためにソースとして使用される別のコンテナアダプタ |
| cont | - | ベースとなるコンテナを初期化するためにソースとして使用されるコンテナ |
| first, last | - | 初期化に使用する要素の範囲 |
| 型の要件 | ||
-Alloc は Allocator の要件を満たさなければなりません。
| ||
-Container は Container の要件を満たさなければなりません。 コンストラクタ (5-10) は Container が AllocatorAwareContainer の要件を満たす場合にのみ定義されます
| ||
-InputIt は InputIterator の要件を満たさなければなりません。
| ||
[編集] 計算量
1, 3, 5, 6, 8: cont または other に比例。
2, 4, 7, 9: 一定。
| This section is incomplete |
[編集] 例
Run this code
#include <stack> #include <deque> #include <iostream> int main() { std::stack<int> c1; c1.push(5); std::cout << c1.size() << '\n'; std::stack<int> c2(c1); std::cout << c2.size() << '\n'; std::deque<int> deq {3, 1, 4, 1, 5}; std::stack<int> c3(deq); std::cout << c3.size() << '\n'; }
出力:
1 1 5
[編集] 関連項目
| コンテナアダプタに値を代入します (パブリックメンバ関数) |

