c++_容器适配器

  • 何为容器适配器?
    容器适配器就是使用标准的STL容器来满足一些特殊的需求。

  • 栈stack

    1
    2
    3
    4
    5
    6
    #include <stack>
    namespace std
    {
    template <typename T, typename Container = deque<T>>
    class stack;
    }

栈默认是用deque实现的,相比于vector,deque在remove操作之后会自动释放之前所占的内存,并且也不用复制所有的元素当遇见重分配(reallocation)的情况下。

  • 队列queue
    1
    2
    3
    4
    5
    6
    #include <queue>
    namespace std
    {
    template <typename T, typename Container = deque<T>>
    class queue;
    }

queue一般用deque实现,你也可以传入一个顺序容器,只要它提供front(),back(),push_front(),push_back(),比如,你也可以传入一个list作为模板参数。

  • 优先权队列priority_queue

    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include <queue>
    namespace std
    {
    template <typename T,
    typename Container = vector<T>,
    typename Compare = less<typename Container::value_type
    >
    class priority_queue;
    }
  • bitset

    1
    2
    3
    4
    5
    6
    #include <bitset>
    namespace
    {
    template <size_t Bits>
    class bitset;
    }

我们可以从一个string来初始化bitset,如bitset<32> b("1100")低四位被初始化为1100,剩下的部分被初始化为0。
提取bitset的值:to_ulong()to_ullong操作都返回了一个值,保存了与bitset对象相同的位模式。如果无法表示则会抛出overflow_error异常。