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::iterator iter1=i1.begin(),iter2=i2.begin();iter1!=i1.end()&&iter2!=i2.end();iter1++,iter2++) }
const_iterator和const的iterator物件 的區別:
前者是乙個迭代器,其自身值可變,但是不能用來改變其所指向的元素的值。
例如:vectornum(10);//宣告並初始化乙個vector
vector::const_iterator cit=num.begain();
*cit=1;//有錯,元值不能改變
++cit;//沒錯,迭代器正常操作
後者是宣告乙個const迭代器,必須初始化,而且初始化後不能改變他的值(既不能自增自減)
例如:vectornum(10);//宣告並初始化乙個vector
const vector::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改變,所以不允許
C 每日積累學習整理 操作符
算數操作符 有些算數操作表示式的求解結果未定義,會引起溢位和異常 例如 除零操作會引發異常。而結算型別為short 假設short型別儲存空間為16位 則計算結果應該在 32768 32767,超出則溢位。還有大型別向小型別隱士轉換時產生的精度缺失 小型別向大型別轉換直接轉換 例如 int a do...
c 學習積累1
1 值型別的變數本身包含他們的資料值 將儲存在棧中 而引用型別的變數包含的是指向包含資料值的記憶體塊的位置資訊 將儲存在受控的堆中 3 引用型別共分四種型別 類 介面 陣列 委派。類除了我們可以定義自己的型別外,又包括兩個比較特殊的型別object和string 它們為預定義引用型別 object是...
學習C 向量 vector
一 向量的介紹 向量vector是一種物件實體,能夠容納許多其他型別相同的元素,因此又被稱為容器。與string相同,vector 同屬於stl standard template library,標準模板庫 中的一種自定義的資料型別,可以廣義上認為是陣列的增強版。在使用它時,需要包含標頭檔案 ve...