處理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;
}
push_back() //把傳送為參數的對象添加到vector的最後
pop_back() //删除vector尾部的對象
erase() //删除一個或多個元素
clear() //删除所有的元素
insert() //插入一個或多個對象。