名前空間
変種
操作

std::queue<T,Container>::queue

提供: cppreference.com
< cpp‎ | container‎ | queue
queue(): queue(Container()){}
(1) (C++11以上)
(2)
explicit queue(const Container& cont = Container());
(C++11未満)
explicit queue(const Container& cont );
(C++11以上)
explicit queue( Container&& cont );
(3) (C++11以上)
queue(const queue& other );
(4)
queue( queue&& other );
(5) (C++11以上)
template<class Alloc >
explicit queue(const Alloc& alloc );
(6) (C++11以上)
template<class Alloc >
queue(const Container& cont, const Alloc& alloc );
(7) (C++11以上)
template<class Alloc >
queue( Container&& cont, const Alloc& alloc );
(8) (C++11以上)
template<class Alloc >
queue(const queue& other, const Alloc& alloc );
(9) (C++11以上)
template<class Alloc >
queue( queue&& other, const Alloc& alloc );
(10) (C++11以上)

様々なデータソースから新しいコンテナアダプタのベースとなるコンテナを構築します。

1) デフォルトコンストラクタ。 コンテナを値初期化します。
2) ベースとなるコンテナ ccont の内容からコピー構築します。 これはデフォルトコンストラクタでもあります(C++11未満)
3) ベースとなるコンテナ cstd::move(cont) からムーブ構築します。
4) コピーコンストラクタ。 アダプタは other.c の内容からコピー構築されます。 (暗黙に宣言)
5) ムーブコンストラクタ。 アダプタは std::move(other.c) から構築されます。 (暗黙に宣言)
6-10) 以下のコンストラクタは std::uses_allocator<container_type, Alloc>::value==true、つまりベースとなるコンテナがアロケータ対応コンテナの場合のみ定義されます (queue と共に使用できる標準ライブラリのコンテナはすべて対応しています)。
6)c(alloc) によって行われるかのように、 alloc をアロケータとして使用してベースとなるコンテナを構築します。
7)c(cont, alloc) によって行われるかのように、 alloc をアロケータとして使用して cont の内容からベースとなるコンテナを構築します。
8)c(std::move(cont), alloc) によって行われるかのように、 alloc をアロケータとして使用して cont の内容からムーブセマンティクスを用いてベースとなるコンテナを構築します。
9)c(other.c, alloc) によって行われるかのように、 alloc をアロケータとして使用して other.c の内容からアダプタを構築します。
10)c(std::move(other.c), alloc) によって行われるかのように、 alloc をアロケータとして使用して other の内容からムーブセマンティクスを用いてベースとなるコンテナを構築します。

目次

[編集]引数

alloc - ベースとなるコンテナのすべてのメモリ確保のために使用するアロケータ
other - ベースとなるコンテナを初期化するためにソースとして使用される別のコンテナアダプタ
cont - ベースとなるコンテナを初期化するためにソースとして使用されるコンテナ
first, last - 初期化に使用する要素の範囲
型の要件
-
AllocAllocator の要件を満たさなければなりません。
-
ContainerContainer の要件を満たさなければなりません。 コンストラクタ (5-10) は ContainerAllocatorAwareContainer の要件を満たす場合にのみ定義されます
-
InputItLegacyInputIterator の要件を満たさなければなりません。

[編集]計算量

ラップされているコンテナの対応する操作と同じです。

[編集] 欠陥報告

以下の動作変更欠陥報告は以前に発行された C++ 標準に遡って適用されました。

DR 適用先 発行時の動作 正しい動作
P0935R0 C++11 default constructor was explicit made implicit

[編集]

#include <queue>#include <deque>#include <iostream>   int main(){std::queue<int> c1; c1.push(5);std::cout<< c1.size()<<'\n';   std::queue<int> c2(c1);std::cout<< c2.size()<<'\n';   std::deque<int> deq {3, 1, 4, 1, 5};std::queue<int> c3(deq);std::cout<< c3.size()<<'\n';}

出力:

1 1 5

[編集]関連項目

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