1.命名空间的using声明
在编译程序前,确保添加了适合的#include和using声明:using std::cin
2.标准库string类型
1)string 对象的定义和初始化
string s1;默认构造函数,s1为空串
string s2(s1);将s2初始化为s1副本
string s3("valuw");初始化为一个字符串字面值副本
string s4(n,'c');初始化为字符‘c’的n个副本
2)string对象的读写
从标准流输入:忽略开沟所有的空白字符;再次遇到空白字符停止(空格,换行符,制表符)string word;cin>>word;
用getline读行:不忽略开头的空白字符,遇到换行符停止,并丢弃换行符。string line;getline(cin,line);
3)string对象操作
s.empty() 如果s为空串,返回true
s.size() 返回s中字符的个数
s[n] 返回s中位置为n的字符,位置从0开始
s1+s2 链接s1和s2
注意:v1==v2 相等返回true ,否则返回false
(1)string::size_type类型:任何存储string的size操作结果变量必须为string::size_type类型。不要把size的返回值赋给一个int变量。
(2)string 对象和字符串字面值混合链接操作时,+操作符的左右操作数必须指定好有一个是string类型
(3)string对象的索引变量最好也用string::size_type
3.标准库vector类型
vector是同一种类型的对象的集合容器。
vector不是一种数据类型,而只是一个类模板。
vector类型的每一种都指定了其保存元素的类型,因此,vector<int>和vector<string>都是数据类型
1)vector对象的定义和初始化
vector<T> v1;v1为空
vector<T> v2(v1);v2为v1的副本
vector<T> v3(n,i);v3包含n个值为i的元素
vector<T> v4(n);含有值初始化的元素的n个副本
2)vector对象的操作
v.empty() v为空返回true
v.size() 返回v中元素的个数
v.push_back(t)在v的末尾增加一个值为t的元素
v.[n] 返回v中位置为n的元素
v1=v2 v1中的元素替换成v2
v1==v2 相等,返回true
注意:
(1)使用size_type类型时:vector<int>::size_type
(2)下标操作不添加元素,只能获取已存在的元素:适合任何使用下标操作的情形
4.迭代器简介
是一种检查容器内元素并遍历元素的数据类型:所有的标准库容器都定义了相应的迭代器类型,只有少数的容器支持下标操作
1.容器的iterator类型(内成员,就是一个指针类型)
vector<int>::iterator iter;
2.begin和end操作
vector <int> ::iterator iter=ivec.begin();
begin和end函数用于返回迭代器,end操作返回vector的“末端元素的下一个“。
迭代器类型可以使用解引用操作符*iter,和自增操作++iter。
const_iterator 只能用来读取容器内元素,但不能改变值:vector<int> ::const_iterator
const 迭代器只能用来改变其指向的元素,const vector<int>::iterator
5.标准库bitset类型
bitset类型对象的区别在于长度而不在其类型,在定义bitset时,要明确bitset含有有多少位。
bitset<32> bitvec; ——>给出的长度值必须是常量表达式。
1)初始化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)string对象和bitset对象之间是反向转化的:从string对象读入位集的顺序是从右向左
2)bitset对象上的操作
b.any() 是否存在1的位 b.none() 不存在1的位? b.count() 1个数,返回值size_t b.test(pos) pos位是否为1 b.size() 二进制位个数 b.set() 全置1 b.set(pos) pos位置1 b.reset() 全置0 b.reset() 全置0 b.flip() 全反转 b.flip(pos) 指定位取反 b.to_ulong() 返回ulong值 os<<b 输出到os流