处理string 中的字符
访问字符串的每个字符
for(int i=0;i<s3.size();i++)
{
cout<<s3[i]<<endl;
s3[i]='s';
}
//标准容器迭代器的运算符
*iter //返回迭代器iter所指元素的引用
iter->mem //解引用iter并获取该元素的名为mem的成员。等价于(*iter).mem
++iter //令iter指示容器中的下一个元素
--iter //令iter指示容器中的上一个元素
iter1==iter2 //判断两个迭代器是否相等(不相等),如果两个迭代器指示的是同一个元素或者
//它们是同一个容器的尾后迭代器,则相等;反之,不相等。
c.begin(); 返回指向容器最开始位置数据的指针
c.end(); 返回指向容器最后一个数据单元+1的指针
string str("hi sysu");
for(string::iterator it=str.begin();it!=str.end();it++)
{
cout <<*it<<endl;
}
//使用const_iterator使得访问元素时是能读不能写,这跟常量指针意思差不多。
string str2("hi sysu");
for(string::const_iterator it=str2.begin();it!=str2.end();it++)
{
cout<<*it<<endl;
*it='1'; //这是错误的,不能写
}
//cctype头文件中的函数
isalnum(c) //当c是字母或数字时为真
isalpha(c) //当c是字母时为真
iscntrl(c) //当c是控制字符时为真
isdigit(c) //当c是数字时为真
isgraph(c) //当c不是空格但可打印时为真
islower(c) //当c是小写字母时为真
isprint(c) //当c是可打印字符时为真(即c不是空格或c具有可视形式)
ispunct(c) //当c是标点符号时为真(即c不是控制字符,数字,字母,可打印空白中的一种)
isspace(c) //当c是空白时为真(即c是空格,横向制表符,纵向制表符,回车符,换行符的一种
isupper(c) //当c是大写字母时为真
isxdigit(c) //当c是十六进制数字时为真
tolower(c) //如果c是大写字母,输出对应的小写字母;否则原样输出C
toupper(c) //如果c是小写字母,输出对应的大写字母;否则原样输出c
//string 还有一些很好用的函数,比如找子串
string sq("hello world!");
cout<<s.find("ll",0)<<endl; //返回的是子串位置。第二个参数是查找的起始位置,如果找不到,就近返回string::npos
if(s.find("aa1",0)==string::npos)
{
cout<<"找不到该子串!!!"<<endl;
}
//初始化 Vector对象的方法
vector<T> v1 //v1是一个空vector,它的潜在的元素的T类型的,执行默认初始化
vector<T> v2(v1) //v2中包含有v1所有元素的副本
vector<T> v2=v1 //等价于v2(v1),v2中包含有v1所有元素的副本
vector<T> v3(n,val) //v3包含了n个重复的元素,每个元素的值都是val
vector<T> v4(n) //v4包含了n个重复执行了初始化的对象
vector<T> v5{a,b,c...} //v5包含了初始值个数的元素,每个元素被赋予相应的初始值
vector<T> v5={a,b,c...} //等价于v5{a,b,c...}
//如果vector的元素类型是int,默认初始化为0;如果vector元素类型为string,则默认初始化为空字符串。
vector<int> v1;
vector<father> v2;
vector<string> v3;
vector<vector<int> >; //注意空格,这里相当于二维数组int a[n][n];
vector<int> v5={1,2,3,4,5}; //列表初始化,注意使用的是花括号
vector<string> v6={"hi","my","name","is","lee"};
vector<int> v7(5,-1); //初始化为-1,-1,-1,-1,-1.第一个参数是数目,第二个参数是要初始化的值
vector<string> v8(3,"hi");
vector<int> v9(10); //默认初始化为10.10.10.10.10。。。。。。。
vector<int> v10(4); //默认初始化为空字符串
//如何向vector添加元素?
//请使用push_back加入元素,并且这个元素是被加在数组尾部的。
for(int i=0;i<20;i++)
{
v1.push_back(i);
}
vector支持的其他的操作
v.empty() //如果V不包含有任何的元素,返回真,否则返回假
v.size() //返回v中元素的个数
v.push_back(t) //向V的尾端添加一个值为t的元素
v[n] //返回v中第n个位置上元素的引用
v1=v2 //用v2中元素的拷贝替换v1中的元素
v1={a,b,c...} //用列表中元素的拷贝替换v1中的元素
v1==v2 //v1和v2相等当且仅当它们的元素数量相同且对应位置的元素值都相同
v1!=v2
<,<=,>,>=
访问和操作vector中的元素
for(int i=0;i<v1.size();i++)
{
cout <<v1[i]<<endl;
v1[i]=100;
cout<<v1[i]<<endl;
}
使用迭代器访问元素,正向迭代
vector<string> v6={"hi","my","name","is","len"};
for(vector<string>::iterator iter=v6.begin();iter!=v6.end();iter++)
{
cout<<*iter<<endl;
//下面两种方法都行
cout<<(*iter).empty()<<endl;
cout<<iter->empty()<<endl;
}
反向迭代
for(vector<string>::reverse_iterator iter=v6.rbegin();iter!=v6.rend();iter++)
{
cout <<*iter<<endl;
}
vector最常用的增删操作
push_back() //把传送为参数的对象添加到vector的最后
pop_back() //删除vector尾部的对象
erase() //删除一个或多个元素
clear() //删除所有的元素
insert() //插入一个或多个对象。