现在的位置: 首页 > 综合 > 正文

c++学习2

2017年10月13日 ⁄ 综合 ⁄ 共 2379字 ⁄ 字号 评论关闭

String对象的定义和初始化:

String s1;默认构造函数。S1为空串;

String s2(s1);将s2初始化为s1的副本。

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

String s4(n,’c’);将s4初始化为字符‘c’的n个副本

 

Getline(cin,string);直到遇到换行停止。

String对象的下标从0开始,如果s是一个string对象且s不空,则s[0]则是第一个元素;

S[s.sizeof()-1]为最后一个元素。

 

String类类型和许多其他库类型都定义了一些配套类型,通过这些配套类型,库类型的使用就能与机器无关。Size-type就是这些配套类型的一种。它的定义为与unsigned型(unsigned int 或unsigned long)具有想通的含义。String::size-type。

 

String对象中字符的处理

Cctype定义的函数:适合string对象的字符(或其他任何char值)

这些函数都在cctype头文件中定义:

Isalnum(c);//是字母或数字返回true

Isalpha(c);//是字母返回true

Iscntrl(c);//是控制字符返回true

Isdigit(c);//是数字返回true

Isgraph(c);//不是空格但可以打印返回true

Islower(c);//是小写字母返回true

Isprint(c);//可打印返回true

Ispunct();//是标点字符返回true

Isspace()//是空格返回true

Isupper()//是大写字母返回true

Isxdigit();//是十六进制数字返回true

Tolower(c);//如果是大写字母返回小写的形式,否则直接返回c

Toupper(c);//如果是小写字母返回大写形式,否则直接返回c

例如:

#Include<cctype >//cctype和ctype.h中内容是一样

String s(”Hello World!!!”);

For(string :: size_type index=0;index!=s.size();++index)

S[index]=tolower(s[index]);

 

结果:hello world!!!

 

 

标准库vector类型

我们把vector称为容器;

Vector是一个类模板,vector<int >ivec;

 

和其他变量定义一样,定义vector对象要指定类型和一个变量列表。上面的一个定义,类型是vector<int >,该类型及时含有若干个int类型对象的vector,变量名为ivec;

几种初始化vector对象的方式:

Vector<T> v1;//vector保存类型为T对象,默认构造函数v1为空

Vectoe<T>v2(v1);//v2是v1的一个副本,

Vector<T>v3(n,i);//v3包含n个值为i的元素

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

 

Vector<int >fvec(10);//fvec容器中含有10个int类型的元素,每一个被初始化为0;

Vector的操作:v.empty();v.size();v.push_back(t);在v末尾添加一个值为t的元素。V[n]第n个元素。和比较运算符。

使用size_type时,必须要指出该类型是在那里定义的。Vector类型总是vector的元素类型。

Vector<int >::size_type//ok;

Vector::size_type//error;

下标操作不添加元素v[n]=9;错误。应该为v.push_back(9);

必须是以存在的元素才能用下标操作符进行索引,通过下标操作进行复制时,不会添加任何元素。

 

 

迭代器是一种检查容器内元素并遍历云阿苏的数据类型。

因为只有少数的容器支持下标操作。因为迭代器对虽有的容器都使用,现代c++程序更倾向于使用迭代器而不是下标操作访问容器操作。

每种容器都定义了自己的迭代器类型,如vector:

Vector<int >::iterator iter;

这条语句定义了一个名为iter的变量,他的数据类型是由vector<int >定义的iterator类型。

每个标准库容器类型都定义了一个名为iterator的成员。

各容器类都定义了自己的iterator类型,用于访问容器内的元素。换句话说,没个容器定义了一个名为iterator的类型,而这种类型支持迭代器的各种操作。。迭代器可使用解引用操作符(*)来访问迭代器所指向元素。*ite=0;

 

迭代器使用自增操作符向前移动迭代器指向容器中下一个元素

Begin返回迭代器指向的第一个元素。End操作返回迭代器不止像任何元素,因此不能对它进行任何解引用或自增操作。

典型做法是用迭代器来编写循环:

Vector<int> iter;

For(vector<int >::iteratoriter=ivec.begin();iter!=ivec.end();iter++)

 *iter=0;

 

 

Const_iterator我们得到一个迭代器骂他本身的值可以改变,但不能用来改变其所指向的元素的值。可以对迭代器进行自增以及使用接引用操作来读取值,但不能对该元素值赋值、

Vector<int >::const_iterator  iter;

Const vector<int>::iterator iter;//它必须被初始化,并且其迭代器的值不能再进行改变。没有实质性的意义。

 

Iter1-iter2表示两个迭代器之间的距离。返回类型为difference_type;unsigned类型。

 

Vector<int>::iteratormid=vi.begin()+vi.size()/2;表示指向vi中最靠近正中间的元素。

 

抱歉!评论已关闭.