1,、标准库类型主要包括以下四种:
- string类型:可变长字符串 。头文件声明:#include<string> using std::string;
- vector类型:容器,可以包含其他对象。一个容器中所有对象必须是同一类型的。 头文件声明:#include<vector> using std::vector;
- iterator类型:迭代器。一种检查容器内元素并遍历元素的数据类型。
- bitset类型:处理二进制位的有续集。 头文件声明:#include<bistset> using std::bitset;
2、string 类型的输入操作符和 getline 函数分别如何处理空白字符?
string 类型癿输入操作符对空白字符癿处理:读取并忽略有效字符(非空白字符)之前所有癿空白字符,然后读取字符直至再次遇到空白字符,读取终止(该空白字符仍留在输入流中)。
getline 函数对空白字符癿处理:不忽略行开头的空白字符,读取字符直至遇到换行符,读取终止并丢弃换行符(换行符从输入流中去掉但并不存储在 string对象中)。
3、string对象的大小比较策略:
- 如果两个string对象长度不同,且短的string对象与长的string对象的前面部分相匹配,则短的string对象小于长的string对象。
- 如果两个string对象的字符不相符,则比较第一个不匹配的字符。
4、当进行string对象和字符串字面值混合连接操作时,+操作符的左右操作数至少有一个是string类型的。
典例:string s2=s1+","+"word"。 //s1与","相加后返回一个新的string对象
5、vector不是一种数据类型,而只是一个类模板,可用来定义任意多种数据类型。如:vector<int>和vector<string>
☆vector下标操作不添加元素,只能获取已存在的元素。添加元素应该使用push_back( ) 操作。
6、遍历vector元素的操作:
- 下标实现:for(vector<int>::size_type ix=0 ; ix!= ivec.size() ; ++ix) ivce[ix]=0; //将元素值重置为0。
- 迭代器实现:for(vector<int>::iterator iter=ivec.begin(); iter!=ivec.end(); ++iter) *iter=0; //将元素值重置为0
7、begin和end操作:
每种容器都定义了一对名为begin和end的函数,用于返回迭代器。
如果容器中有元素的话,由begin返回的迭代器指向第一个元素,由end返回的迭代器指向“末端元素的下一个”
8、const_iterator类型和const的iterator类型的区别:
每个容器类型还定义了const_iterator类型,该类型只能用于读取容器内的值,但不能改变其值。
const的iterator对象:声明一个const迭代器时,必须初始化迭代器。并且一旦初始化后,就不能改变它的值。即它只能用来改写其指向的元素,但不能使它指向其他任何元素。几乎没有什么用处。
9、bitset类型对象的区别仅在于其长度而不在其类型。 bitset<32> bitvec; //32bits,全为0。
☆string对象和bitset对象之间是反向转化的:string对象的最右边字符(即下标最大的)用来初始化bitset对象的低价位(即下标为 0的位)。