STL コンテナ アダプタの基になるコンテナへのアクセス
C では、STL コンテナ アダプタは既存のコンテナに追加機能を重ねます。ただし、特定の操作では、これらのアダプタの基になるコンテナにアクセスすることが望ましい場合があります。
スタックとキューのメソッド
スタックとキューには、非標準のメソッドがあります。基になるコンテナを取得できる _Get_container() というメソッド。ただし、このメソッドは標準の一部ではなく、その可用性は実装によって異なる場合があります。
Priority_queue のメソッド
残念ながら、基礎となるキューにアクセスする標準メソッドはありません。 priority_queue のコンテナ。
代替アプローチ
3 つのコンテナ アダプタすべてに対する代替アプローチの 1 つは、基礎となるコンテナにアクセスできるプライベート派生クラスを使用することです。たとえば、priority_queue の場合:
<code class="cpp">template <class T, class S, class C> S& Container(priority_queue<T, S, C>& q) { struct HackedQueue : private priority_queue<T, S, C> { static S& Container(priority_queue<T, S, C>& q) { return q.*&HackedQueue::c; } }; return HackedQueue::Container(q); }</code>
このアプローチにより、Container() 関数を介して基礎となるコンテナにアクセスできます。
標準ライブラリのドキュメント
C 標準ライブラリの公式ドキュメントは次の場所にあります:
説明
ユーザーの目標は、汎用関数を使用して 1 つの値のコンテナーの内容を出力することです。これは、実際のデータを含む基礎となるコンテナにアクセスすることで実現できます。
以上がSTL コンテナ アダプタの基礎となるコンテナにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。