STL学习笔记--特殊容器

容器配接器

(1) stack
栈 后进先出(LIFO), 头文件#include<stack>

template<class _Ty,
class _Container = deque<_Ty> >
class stack
{	// LIFO queue implemented with a container
...

可以看出,stack内部缺省使用deque实现。可以使用任何序列式容器来支持stack,只要支持back(),push_back操作。可以使用list或vector实现。
stack核心接口:
push 压栈
top 返回栈顶元素,并不移除
pop 出栈 ,移除下一个元素,并不将它返回.
注:如果stack内没有元素,执行top pop会导致为定义的行为,要使用empty()或size()来检验是否为空。
stack运用实例:

//stack 栈  后进先出
stack<int> st;
st.push(1); //压栈
st.push(3);
st.push(8);
st.push(-10);

cout << "
Stack:";
while (!st.empty())
{
	cout << st.top() << " ";	//取栈顶元素
	st.pop(); //出栈
}

(2) queue
队列 先进先出(FIFO), 头文件#include<queue>
queue内部也采用deque实现 支持front() back() push_back pop_front()操作的任何序列式容器都可以实现queue,如list。
queue接口:
push() 入队
front() 返回队首元素
pop 出队,移除元素
queue运用实例:

//queue 队列 先进先出
queue<int,list<int> > listQueue; //使用list实现queue
listQueue.push(1); //入队
listQueue.push(3);
listQueue.push(8);
listQueue.push(-10);

cout << "
Queue:";
while (!listQueue.empty())
{
	cout << listQueue.front() << " ";//取队首元素
	listQueue.pop();//出队
}

(3) priority_queue 优先队列
优先级队列的元素根据优先级读取,即优先级队列的元素已按排序准则排序,缺省的排序准则operator<.

template<class _Ty,
class _Container = vector<_Ty>,
class _Pr = less<typename _Container::value_type> >
class priority_queue
{	// priority queue
...

接口:
push 入队
top 取下一个元素
pop 出队,移除元素

Bitsets

bitset造出一个内含位(bits)或boolean值且大小固定的array。当需要管理各式标志(flags),并以标识的组合来表现变量时,就可以运用bitset。
头文件#include<bitset>

template<size_t _Bits>
class bitset
...

注:这里 template参数并不是一个型别,而是一个不带负号的整数。
运用实例:

enum Color{
	red,
	yellow,
	green,
	blue,
	white,
	black,
	numColors
};

bitset<numColors> usedColors;
usedColors.set(red);//置位
usedColors.set(yellow);

cout << "
bitfield: " << usedColors;
cout << "
number of used colors: " << usedColors.count();	//返回"位值为1"的个数
cout << "
bitfield of unused colors: " << ~usedColors;

if (usedColors.any())	//判断是否有任何位被值1
{
	cout <<"
use colors!";
}
if (usedColors.test(red)) //判断该位是否被设立
{
	cout << "
use red color!";
}
usedColors.set(); //所有位设为true
usedColors.reset(); //所有位设为false
原文地址:https://www.cnblogs.com/cmranger/p/4729814.html