C++学习笔记2——标准库类型

来源:互联网 发布:java 设计模式 pdf 编辑:程序博客网 时间:2024/05/03 18:59

两种最重要的标准库类型是string和vector,string支持长度可变的字符串,vector可以保存一组指定类型的对象。

使用using声明用以简化使用命名空间成员的方法,即省略了namespace_name::。在头文件中必须总是使用完全限定的标准库名字(通常,头文件中只定义确实必要的东西)。

string标准库的几个构造函数:

string s1;默认,s1为“”;

string s2(s1);将s2初始化为s1的一个副本;

string s3(“value”);将s3初始化为一个字符串字面值副本;

string s4(n,‘c’) 将s4初始化为n个字符‘c’;

string类型的输入操作符(cin)的特点:

1、读取并忽略开头所有的的空白字符(空格,换行符,制表符)。

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

比如输入“  hello world    ”,则屏幕上将输出“hello”。

string操作符也返回所读的数据流。

cin.getline()可以读取整行文本,其接受两个参数:一个输入流对象,一个string对象。getline()不会忽略任何的换行符,只要遇到换行符就停止读入,getline函数将istream作为返回值。

string关系运算符>=,<=的比较策略:1、若两个string对象长度不同,且短的string对象与长的string对象前面的相匹配,则长的string大于小的string

2、若两个string对象的字符不同,则比较第一个不匹配的字符,按照a、b、c、顺序增大

在使用“+”连接字符的时候,操作符左右操作数必须至少有一个是string类型的,注意区分string类型与字符串是不同的。“+”操作符的使用原则可以总结为:返回值的类型是否与定义的相同。
标准vector类型

vector可以包含同种类型的对象,被称为容器,它是类模板,在保存时,必须说明vector保存何种对象的类型,形式vector<xxx> xxx;

vector类的构造函数:

1、vector<T> v1;默认保存v1为空

2、vector<T> v2(v1); v2是v1的一个副本

3、vector<T> v3(n,i);v3包含n个值为i的元素

4、vector<T> v4(n);v4含有值初始化的元素的n个副本

当把一个vector对象复制到另一个vector对象时,新复制的vector中每一个元素都初始化为原vector中相应元素的副本。使用vector对象有效的方法是初始化一个空vector对象,然后动态地增加元素

vector的操作:v.push_back(t),在v的末尾增加一个值为t的元素;v1=v2,把v1的元素替换为v2中元素的副本,vector中for循环更常用!=来做判断条件。vector下标元素不能添加元素,而且只能对已经存在的元素进行下标操作。

迭代器(iterator):

迭代器是一种检查容器内元素并遍历元素的数据类型。所有的标准库容器都定义了相应的迭代器类型,如vector:vector<int>::iterator iter;

每种容器都定义了一对名为begin和end的函数,用于返回迭代器,begin返回第一个元素,end返回容器的“末端的下一个”

迭代器类型使用解引用操作符(“*”)来访问迭代器所指向的元素 。++iter指向下一个元素。

每种容器都有const_iterator的类型,其只能用于读取容器内的元素,但不能改变其值,对其解引用,得到的是一个const对象的引用。

const_iterator对象与const的iterator对象是不同的。声明const迭代器时,必须初始化迭代器,一旦初始化后,就不能改变它的值;而const_iterator对象自身的值可以增减,只是不能改变其所指向的元素的值。

iter+n,iter-n的结果是产生一个新的迭代器,其位置在iter所指向元素之前(加号)、之后(减号)n个位置

iter1-iter2 计算两个迭代器对象的距离。

标准库bitset类型

用来处理二进制位,其是一种类模板,在定义bitset时,要明确bitset有多少位,须在尖括号内指出其长度值:bitset<32> bitvec。bitset中的每一位并没有命名,其位置编号从0开始。

bitset初始化的方法:

bitset<n> b; b有n位,每位都为0;

bitset<n> b(u); b是unsigned long型u的一个副本

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

bitset<n> b(s,pos,n); b是s中从位置pos开始的n个位的副本

当用string对象初始化bitset对象时,string对象直接表示为位模式,从string对象读入位集的顺序是从右至左,也就是说string对象和bitset对象之间是反向转化的

原创粉丝点击