標準庫string型別
string型別的初始化方式:
1 string s1; 預設建構函式,s1為空串。
2 string s2(s1);
3 string s3("value");
4 string s4(n,'c');
在進行賦值時,如:s1=s2;是先釋放s1的記憶體,再分配合適的記憶體給s1;
再進行運算時應注意,
string s3=s1+"hello";合法,把乙個string物件和乙個字串字面值連線起來。
string "hello"+","+"world";非法,試圖將兩個字串相加。
string s5=s1+"world";合法,s1先與」,「結合成新的string物件。
string s6="hello"+","+s2;不合法。
for迴圈中,條件的次序不同,會產生
不同的結果。
例如1 for(int i=0;cin>>a&&i<10;i++)
2 for(int i=0;i<10&&cin>>a;i++)
1需要執行11次輸入才能判定跳出迴圈,而2只需要執行10次輸入就能跳出迴圈,說明在執行2中條件判斷是只要出現第乙個不符合系哦啊見就會跳出迴圈,不會繼續進行後續判定,以此類推,在判定含有&&操作符語句的時候都是這樣的。
停止輸入ctrl+z;
標準庫vector型別
幾種初始化vector物件的方式
1 vectorv1 儲存型別為t,預設建構函式,v1為空
2 vectorv2(v1);
3 vectorv3(n,i); 包含n個值為i的元素
4 vectorv4 (n) ; 含有值初始化元素的n個副本
vector中如果存在vectors,則可用s[i][j]表示s中第i個string元素的第j個字元。
迭代器begin(),end().
迭代器型別可以使用自增和解引用操作符(*操作符)來訪問迭代器所指向的元素,由於end操作返回的迭代器不指向任何元素,因此對不能對它進行解引用或自增操作。
我的理解,迭代器更多的象乙個指標,或者說它就是乙個指標。用法有
for(vector::interator iter=ivec.begin();iter!=ivec.end;++iter)
語句中定義了迭代器iter,我覺得就是乙個vector型別的指標;iter=ivec.begin()就是把ivec的首位址賦值給iter,執行中*iter=1就是對iter所指向的元素進行賦值。
任何改變vector長度的操作都會是已存在的迭代器失效。
標準庫bitset型別
bitset與vector類似都是乙個類模板。不過bitset型別物件的區別是在其長度而非其型別。
它的初始化方法:
1 bitsetb; b有n位,全為零。
2 bitsetb(u); b為unsize long型的乙個副本
3 bitsetn(s); 同上,string。
4 bitsetb(s,pos,n) b是s中從位置pos開始的n個單位的副本。
string與bitset之間的轉化是反向的。如;
string strval("1100");
bitset<32>bitvec4(strval);
bitvec4的位模式中第2.3位為1,其餘項為0。
這幾天書看的有點慢,要看快點了。先看完一遍,不懂得再回來好好琢磨。
C Primer 學習筆記(二) 標準庫型別
一 命名空間的using指示與using宣告 1 using宣告 1 乙個using宣告一次只引入乙個命名空間成員。2 using宣告的作用域為 從using宣告點開始,直到包含該using宣告的作用域的末尾,名字都是可見的。類作用域中的using宣告侷限於被定義類的基類中定義的名字。using s...
c primer學習筆記2 標準庫型別
1 string.size 的返回值型別為string size type,而不是int,不要把size的返回值賦給乙個int變數,可能溢位 實際上很多庫型別size操作的返回值型別都是size type型別,這是一種類似unsigned int的型別 同樣在進行索引時索引值也是size type型...
C 新手關於標準庫學習筆記
c 中定義了乙個內容豐富的抽象資料型別標準庫,其中最重要的是string和vector,他們分別定義了大小可變的字串和集合。下面分別詳細講解兩者還有bitset的一些基本用法。新手記錄的東西都很瑣碎,沒辦法 標準庫string型別 讀寫 標準輸入讀取string型別 cin s 忽略開頭所有空白字元...