首頁 > 後端開發 > C++ > 如何存取STL容器適配器中的底層容器?

如何存取STL容器適配器中的底層容器?

Linda Hamilton
發布: 2024-11-02 23:02:30
原創
588 人瀏覽過

How to Access the Underlying Containers in STL Container Adaptors?

存取 STL 容器轉接器中的底層容器

在 C 中,STL 容器轉接器在現有容器之上附加功能。然而,對於某些操作來說,存取這些適配器中的底層容器可能是需要的。

堆疊和佇列的方法

對於堆疊和佇列,有一個非標準的名為 _Get_container() 的方法可以檢索底層容器。但是,此方法不是標準的一部分,其可用性可能因實作而異。

Priority_queue 的方法

不幸的是,沒有標準方法來存取底層priority_queue 的容器。

替代方法

所有三個容器適配器的一種替代方法是使用可以存取底層容器的私有衍生類別。例如,對於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 參考](https:/ /en.cppreference.com/w/)
  • [STL教學](https://www.learncpp.com/cpp-tutorial/the-c-standard-library-48-stl/)

澄清

使用者的目標是使用通用函數列印一值容器的內容。這可以透過存取包含實際資料的底層容器來實現。

以上是如何存取STL容器適配器中的底層容器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板