《C Primer》第三章學習筆記

2022-06-09 06:03:06 字數 2056 閱讀 3779

string和vector是c++中的容器,由於兩者操作方式差不多,因此放在一起。

初始化:

#include #include using namespace std;

int main(void)

一些基本操作:

#include #include using namespace std;

int main(void)

關於getline和cin的區別:getline會讀取空白符而cin不會,cin遇到空白符就會結束讀取

字串可以通過下標的方式讀取字元

vector的一般形式為vectorobject,vector中儲存的物件型別都是一樣。需要vector stl

#include #include using namespace std;

int main(void)

; /*有點類似於陣列初始化,5個物件分別初始化為1、2、3、4、5*/

vectorv7 = ; /*同陣列初始化*/

return 0;

}

#include #include using namespace std;

int main(void)

; /*將列表中的值依次替換v1中的物件*/

v1[0]; /*下標查詢*/

v1 >= v2; /*vector容器之間可以互相比較*/

return 0;

}

注意: vector物件之間不能進行+, -運算

c++中的容器有迭代器, 可以對容器的物件進行訪問, 修改等操作. 這裡介紹兩個基本的迭代器成員:beginend. (看用法像是一種指標)

begin: 指向容器中的第乙個物件

end: 指向容器中的最後乙個物件的後乙個位置

迭代器的部分操作

#include #include using namespace std;

int main(void)

return 0;

}

其中vector可以用auto來代替, 讓編譯器自動幫我們判斷迭代器的型別. string的迭代器用法與vector的差不多, 不過裡面物件的型別換成了字元.

注意: 使用迭代器時不要更改容器的大小, 這樣會導致end迭代器失效

c++中的陣列和c語言中的陣列並沒有什麼太大的區別, 不過陣列中同樣擁有像begin和end那樣的迭代器成員, 不過是函式

#include #include using namespace std;

int main(void)

; int* begin = begin(ch); /*begin和end函式型別都是指標, 而且兩者之間都可以進行簡單的運算*/

int* end = end(ch);

while (begin != end)

cout << endl;

return 0;

}

陣列可以賦值給vector和string物件, 但是反過來不可以

string物件需要賦值給陣列, 則需要函式c_str()

用c語言表示字串是const char* variable,因為字串是常量所以要加const

#include #include #include using namespace std;

int main(void)

c primer 筆記,第三章

初始化string物件的6種方式 string s1 預設空串 sting s2 s1 string s2 s1 string s3 value 直接初始化 string s3 value 拷貝初始化 string s4 n,c 由連續n個字元c組成的串在讀寫string物件時,string物件會自...

C Primer 筆記 第三章

c primer 第三章 標準庫型別 3.1using 宣告例 using namespace atd using std cin 3.2string 型別初始化方式 string s1 預設建構函式,s1 為空串string s2 s1 將s2初始化為s1 的乙個副本 string s3 valu...

C Primer學習(第三章)

初始化string物件的方式 string s1 string s2 s1 string s2 s1 string s3 value string s3 value string s4 n,c 使用getline讀取一整行 int main int b begin a int e end a 對陣列...