X Tutup
The Wayback Machine - https://web.archive.org/web/20180522175059/http://ja.cppreference.com:80/w/cpp/container/stack/stack
名前空間
変種
操作

std::stack::stack

提供: cppreference.com
< cpp‎ | container‎ | stack
(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) ベースとなるコンテナ ccont の内容からコピー構築します。 これはデフォルトコンストラクタでもあります (C++11以前)
2) ベースとなるコンテナ cstd::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 - 初期化に使用する要素の範囲
型の要件
-
AllocAllocator の要件を満たさなければなりません。
-
ContainerContainer の要件を満たさなければなりません。 コンストラクタ (5-10) は ContainerAllocatorAwareContainer の要件を満たす場合にのみ定義されます
-
InputItInputIterator の要件を満たさなければなりません。

[編集] 計算量

1, 3, 5, 6, 8: cont または other に比例。

2, 4, 7, 9: 一定。

[編集]

#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

[編集] 関連項目

コンテナアダプタに値を代入します
(パブリックメンバ関数) [edit]
X Tutup