STL コンテナ アダプタの基礎となるコンテナにアクセスするにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-02 23:02:30
オリジナル
436 人が閲覧しました

How to Access the Underlying Containers in STL Container Adaptors?

STL コンテナ アダプタの基になるコンテナへのアクセス

C では、STL コンテナ アダプタは既存のコンテナに追加機能を重ねます。ただし、特定の操作では、これらのアダプタの基になるコンテナにアクセスすることが望ましい場合があります。

スタックとキューのメソッド

スタックとキューには、非標準のメソッドがあります。基になるコンテナを取得できる _Get_container() というメソッド。ただし、このメソッドは標準の一部ではなく、その可用性は実装によって異なる場合があります。

Priority_queue のメソッド

残念ながら、基礎となるキューにアクセスする標準メソッドはありません。 priority_queue のコンテナ。

代替アプローチ

3 つのコンテナ アダプタすべてに対する代替アプローチの 1 つは、基礎となるコンテナにアクセスできるプライベート派生クラスを使用することです。たとえば、priority_queue の場合:

<code class="cpp">template <class T, class S, class C>
S&amp; Container(priority_queue<T, S, C>&amp; q) {
    struct HackedQueue : private priority_queue<T, S, C> {
        static S&amp; Container(priority_queue<T, S, C>&amp; q) {
            return q.*&amp;HackedQueue::c;
        }
    };
    return HackedQueue::Container(q);
}</code>
ログイン後にコピー

このアプローチにより、Container() 関数を介して基礎となるコンテナにアクセスできます。

標準ライブラリのドキュメント

C 標準ライブラリの公式ドキュメントは次の場所にあります:

  • [C Reference](https://en.cppreference.com/w/)
  • [STL チュートリアル](https://www.learncpp.com/cpp-tutorial/the-c-standard-library-48-stl/)

説明

ユーザーの目標は、汎用関数を使用して 1 つの値のコンテナーの内容を出力することです。これは、実際のデータを含む基礎となるコンテナにアクセスすることで実現できます。

以上がSTL コンテナ アダプタの基礎となるコンテナにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!