ベクトル、リストなどの順次コンテナーを使用しようとすると、2 番目のデフォルト引数が次のように表示されます。
typename _Ax = allocator <_Ty> >
キューではなく、他の順次コンテナーで必要な理由を知りたいです。これの正確な目的は何ですか。
よろしくお願いします
(やのstd::queue
ような) は、コンテナーではなく、コンテナー アダプターです。取るテンプレート引数の 1 つはコンテナーです。std::priority_queue
std::stack
template<
class T,
class Container = std::deque<T>
> class queue;
キューはそのコンテナーを内部で使用します。これは基本的にコンテナーのラッパーであり、キューのようなインターフェイスを提供します。
もちろん、コンテナー (std::deque
デフォルトでは ) にはアロケーター パラメーターがあり、キューは単なるラッパーであるため、明らかにコンテナーと同じアロケーターを使用します。そのため、キューのアロケーター パラメーターはコンテナー パラメーターで暗黙的に指定されます。
アロケーター パラメーターの目的は、ユーザーが目前のユース ケースに最適化されたメモリの割り当て/割り当て解除の方法 (場合によっては、構築/破棄の方法も) を定義できるようにすることです。標準アロケーターは、割り当てと割り当て解除が必要な場合は常にmalloc
and free
(または同等のもの) を実行しますが、これは特定のシナリオでは望ましくない場合があります。カスタマイズされたアロケーター ( Boost プール アロケーターなど) を渡すと、効率が向上するか、別の方法で役立つ場合があります。