c++_容器适配器
何为容器适配器?
容器适配器就是使用标准的STL容器来满足一些特殊的需求。栈stack
1
2
3
4
5
6
namespace std
{
template <typename T, typename Container = deque<T>>
class stack;
}
栈默认是用deque实现的,相比于vector,deque在remove操作之后会自动释放之前所占的内存,并且也不用复制所有的元素当遇见重分配(reallocation)的情况下。
- 队列queue
1
2
3
4
5
6
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
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
namespace
{
template <size_t Bits>
class bitset;
}
我们可以从一个string来初始化bitset,如bitset<32> b("1100")
低四位被初始化为1100,剩下的部分被初始化为0。
提取bitset的值:to_ulong()
和to_ullong
操作都返回了一个值,保存了与bitset对象相同的位模式。如果无法表示则会抛出overflow_error异常。