首页 >后端开发 >C++ >如何访问STL容器适配器中的底层容器?

如何访问STL容器适配器中的底层容器?

Linda Hamilton
Linda Hamilton原创
2024-11-02 23:02:30581浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn