您的位置:首页 > 编程语言 > C语言/C++

【C++】《C++标准程序库》小结第十章-特殊容器

2016-03-21 12:24 323 查看
(一)stack堆栈

a)       LIFO后进先出。一般只有三个接口有用:pop(), push(), top()。

b)       可以自己制作一个,一般封装deque,原因是deque释放元素就直接释放了内存,符合堆栈特性。

 

(二)queue队列

a)       FIFO先进先出。核心接口:push(), pop(), front(), back()。

b)       一般封装deque,理由同上。

 

(三)priority queue优先队列

a)       核心接口:push(), pop(), top()。

b)       一般封装vector,原因是采用heap算法。用deque也行。

 

(四)bitset

a)       一个内含位(bit)的固定大小的array容器。适用于管理标志(flag)。速度一般并不是非常高效。

b)       可以方便的在数与二进制编码之间转化:

cout <<bitset<numeric_limits<unsigned long >::digits >(267);

cout << bitset<100>(string(“1000101011”)).to_ulong();

关于数值极限,请参考第四章。

c) bitset的初始化方式:

bitset( value );

bitset(const string&, str_idx);

bitset(const string&, str_idx,str_num);

string 里只能是包含0和1的字符串。

str_idx   是字符串的位置

str_num 是转化多少个位

d) 特殊操作

函数名

作用

count()

位值为1 的个数

any()

只要有1就为真

none()

都为0就是真

test(idx)

判断位是否为1

set()

全部设为1

set(idx)

设某位为1

set(idx,value)

设某位的值

reset

全为0

reset(idx)

某位设为0

flip

翻转所有位

flip(idx)

翻转某一位

^= |= &=

自己看

<<=

左移动,空白填0

>>=

右移动,空白填0

~bitset

返回翻转值

bitset << num

返回左移动num位的值

bitset >> num

返回右移动num位的值

& | ^ bitset

自己看

 

 

可以使用标准IO库来输入输出,比如cin >> bitset; cout << bitset;

只能是包含0和1的字符串。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: