笔记2 (标准库类型string、vector和bitset)

来源:互联网 发布:指南针淘宝店是正品吗 编辑:程序博客网 时间:2024/05/16 08:38

抽象数据类型(abstract data type)

通常,头文件中应该只定义确定必要的东西


标准库string 类型

 

#include<string>

using  std::string;


string的定义和初始化

string类型的输入操作符:

         string s;

         cin>>s;

读取并忽略开关所有的空白字符(如空格、换行符,制表符);

读取字符直到再次遇到空白字符,读取终止。

 

string的输入操作符会返回所给的数据流,因此,可以把输入当作判断条件。

 

用getline读取整行文本

getline接受两个参数:一个输入流对象和一个string对象。

getline并不忽略行开关的换行符。

 

string类型的输入操作符和getline函数分别如何处理空白字符:

    1、string类型的输入操作符对空白操作符的处理:读取并忽略有效字符(非空白字符)之前所有的空白字符,然后读取字符直到再次遇到空白字符,读取终止(该空白字符仍然在输入流中)。

   2、getline函数对空白字符的处理:不忽略开关的空白字符,读取字符直到遇到换行符,读取终止并丢弃换行符(换行符从输入流中去掉但并不存储在string对象中)。

 

string对象的操作:

s.empty();

s.size();

s[n];

s1 + s2;

s1 = s2;

 

string对象和字符串字面值混合连接操作时,+操作符的左右操作数必须至少有一个string类型的。

string类型可通过下标操作符([ ])访问string对象的某个字符。

 

string对象中字符的处理

#include<cctype>



标准库vector类型

一个容器中的所有对象都必须是同一个类型的。

#include<vector>

using  std::vector;

vector是一个类模板(class  template)。

vector对象(以及其他标准库容器对象)的重要属性就在于可以在运行高效地添加元素,因为vector增长的效率高,在元素什己知的情况下,最好是动态地添加元素。

 

vector对象的操作

v.empty();

v.size();

v.push_back(t);

v1 = v2;

v1 == v2;

 

迭代器简介

迭代器(iterator)所存的标准库容器都定义了相关的迭代器类型。

若一种类型支持一组确定的操作,(这些操作可用来遍历容器内的元素,并访问这些元素的值),我们就称这种类型为迭代器。

 

begin和end操作

由begin返回的迭代器指向第一个元素;

由end操作返回的迭代器指向vector的“末端元素的下一个”。通常称之为超出末端迭代器(off-the-end iterator)。

 

const_iterator

该类型只能用于读取容器内元素,但不能更改其值,迭代器本身可以改变。

对const_iterator解引用时,可以得到一个指向const对象的引用。

const_iterator与const iterator不相同,后者基本没用。

 

迭代器的自述操作:

iter±n                可用迭代器加上或减去一个整型值

iter1 – iter2         计算两个迭代器对象的距离,该距离是名为defference_type的signed(只是数值类型,不代表两类型完全相同)类型的值,iter1与iter2两者必须都指向同一vector的元素或末端之后的下一个元素。

两个迭代器相加的操作是末定义的。

 

标准库bitset类型

#include<bitset>

using std::vector;

bitset类型对象的区别在公在其长度而不在其基类型。

bitset<n>  b;

 

bitset<n> b(s);           //b是string对象s中含有的位串的副本

当用string对象初始化bitset对象时,string对象直接表示为位模式

 

原创粉丝点击