【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) 特殊操作
可以使用标准IO库来输入输出,比如cin >> bitset; cout << bitset;
只能是包含0和1的字符串。
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的字符串。
相关文章推荐
- 快速排序C++
- 使用C/C++写Python模块
- 基于流加密(stream cipher)下如何依靠多段密文获取特定密文的明文(c++实现)
- 设计模式--单例模式C++实现
- C++:FMC 错误
- Problem N
- 在mac console下 执行c++文件
- C++ 结构体中含有函数时sizeof结构体大小
- C++模板函数和模板类的编译与使用
- C++中利用数组对字符进行除重和排序
- Level Order Traversal 图的层序遍历 cpp
- C++中的标准IO库详解
- 2016第七届蓝桥杯 C/C++省赛第9题 交换瓶子
- C语言实现单链表
- boost类库实现普通C++类的迭代
- C++中各种类型的成员变量的初始化方法(mark-好)
- 数据类型汇总(java、php、C++)
- 【C++】定义全局常量的一个优雅的方案
- zy-c++ string 学习小结
- C++中delete和delete[]的区别