string对象字符处理有一些很实用的小函数,用来判断当前字符的任何char值(在cotype头文件中定义):
isalnum(c) //c是字谜或数字
isalpha(c) //字母
iscntrl(c) //控制符
isdigit(c) //数字
ispunct(c) //标点
还有一些在原书第四版P/77有介绍
现代C++常用vector和迭代器取代数组和指针,因为vector是动态的,空间不用预分配,对程序员来说操作访问修改都比较容易。
当然在追求程序速度的时候,数组和指针必不可少。vector及迭代器操作
vector的empty(),push_back(),pop_back(),size()等操作较容易在此不做介绍。
//判断两个vector是否相等(核心程序)
for (vector<int>::iterator iter1=i1.begin(),iter2=i2.begin();iter1!=i1.end()&&iter2!=i2.end();iter1++,iter2++){
if (*iter1!=*iter2) //*iter解引用,即取迭代器所指向的元素值
{
break;
}
}
前者是一个迭代器,其自身值可变,但是不能用来改变其所指向的元素的值。
例如:
vector<int> num(10);//声明并初始化一个vector
vector<int>::const_iterator cit=num.begain();
*cit=1;//有错,元值不能改变
++cit;//没错,迭代器正常操作
后者是声明一个const迭代器,必须初始化,而且初始化后不能改变他的值(既不能自增自减)
例如:
vector<int> num(10);//声明并初始化一个vector
const vector<int>::iterator cit=num.begain();
*cit=1;//对元素赋值,没错
++cit;//有错,const类型迭代器不能自增
说到const,const引用和非const容易混淆:
const引用是指向const对象的引用:
例如:
const int ival=1024;
const int &reival=ival;//没错,别名和原值都是const的
int &re2=ival;//有错,试图修改re2会导致ival改变,所以不允许