一、知识点
1、命名空间的using声明
2、标准库string类型
3、标准库vector类型
4、迭代器简介
5、标准库bitset类型
二、要点
3、标准库vector类型
初始化vector对象的方式 |
vector<T> v1 |
v1保存T类型的对象。采用T的默认构造函数构造 |
vector<T> v2(v1) |
v2是v1的一个副本 |
vector<T> v3(n, i) |
v3包含n个值为i的T对象元素 |
vector<T> v4(n) |
v4包含初始化的T对象的n个副本 |
(1)、注意如果T是没有默认构造函数的类,则在初始化这种类型的vector对象时,不但需要提供元素个数,还需要提供元素初始值。
(2)、仅能对确知的已存在的元素进行下标操作,而且进行下标操作时,是不能进行添加元素的。
4、迭代器简介
迭代器是一种检查容器内元素并遍历元素的数据类型。
(1)、end操作:end操作返回的迭代器指向vector的“末端元素的下一个”,即指向一个不存在的元素;如果vector是空的,则begin和end是一样的。
(2)、解引用:迭代器类型可以使用解引用操作符(*操作符)来访问迭代器指向的元素内容。
(3)、const_iterator:这个类型只能读取容器,不能修改其值;而const的迭代器是在初始化时指向一个vector,它是不能改变它指向的对象,但是可以改变其指向的值。
5、标准库bitset类型
bitset类是一种对位集进行处理的类型。
bitset初始化方法 |
bitset<n> b |
b有n位,每位都为0 |
bitset<n> b(u) |
b是unsigned long型u的一个副本 |
bitset<n> b(s) |
b是string对象s中含有的位串的副本 |
bitset<n> b(s, pos, n) |
b是s中从pos开始的n个位的副本 |
(1)、在定义bitset时,要明确bitset含有多少位,须在尖括号中给出它的长度值。
(2)、用unsigned long初始化bitset对象:该值直接转换为二进制的位模式;如果bitset长度大于unsigned long值的二进制位数,则将其余的高阶位置为0;如果小于,则超过的高阶位被丢弃。
(3)、用string对象初始化bitset对象:从string对象读入位集的顺序是从右到坐。
(4)、bitset对象上的操作,如下图
bitset操作 |
b.any() |
b是否存在置为1的二进制位 |
b.none() |
b是否不存在置为1的二进制位 |
b.count() |
b中置为1的二进制位的个数 |
b.size() |
b中二进制位的个数 |
b[pos] |
访问b中在pos处的二进制位 |
b.test(pos) |
b中在pos处的二进制位是否为1 |
b.set() |
把b中的所有二进制位都置为1 |
b.set(pos) |
把b中在pos处的二进制位置为1 |
b.reset() |
把b中的所有二进制位都置为0 |
b.reset(pos) |
把b中在pos处的二进制位置为0 |
b.flip() |
把b中的所有二进制位取反 |
b.flip(pos) |
把b中在pos处的二进制取反 |
b.to_long() |
从b的二进制位中返回一个unsigned long值 |
os << b |
把b中的位集输出到os |