存取 STL 容器轉接器中的底層容器
在 C 中,STL 容器轉接器在現有容器之上附加功能。然而,對於某些操作來說,存取這些適配器中的底層容器可能是需要的。
堆疊和佇列的方法
對於堆疊和佇列,有一個非標準的名為 _Get_container() 的方法可以檢索底層容器。但是,此方法不是標準的一部分,其可用性可能因實作而異。
Priority_queue 的方法
不幸的是,沒有標準方法來存取底層priority_queue 的容器。
替代方法
所有三個容器適配器的一種替代方法是使用可以存取底層容器的私有衍生類別。例如,對於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 標準庫的官方文件可以在以下位置找到:
澄清
使用者的目標是使用通用函數列印一值容器的內容。這可以透過存取包含實際資料的底層容器來實現。
以上是如何存取STL容器適配器中的底層容器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!