第3章 字串向量和陣列

2022-04-08 16:41:27 字數 1428 閱讀 5263

1、標頭檔案不應該包含using宣告

2、直接初始化string(str)or string(num,'char');拷貝初始化:string str = str2;

3、getling(cin,line)讀取一行直到遇到第乙個換行符讀取並丟棄換行符

4、如果一條語句中有size()函式,就不用int避免混用

5、string型別加法必須要有乙個 string物件,多個相加時考慮運算順序判斷是否合法,字串字面量不是string型別

6、string型別大小比較小寫字母比大寫字母大,順序靠後的大

7、c++版的c標準庫標頭檔案:cname;eg: math.h: cmath;

8、範圍for(range for)eg: for(auto c: str)

9、如果要用for該變string中的元素:for(auto &c : str);必須把迴圈變數定義為引用型別

10、使用下標運算子必須先確保下標的有效性

11、vector:確認無法執行列表初始化後,編譯器會嘗試預設值初始化vector物件

12、vector物件以及string物件的下標運算子可以訪問已存在的元素,但不能用於新增值

13、習慣使用 == 和 != ,因為所有的容器都定義了== 和 !=; iterator const_iterator

14、迭代器的三種含義:迭代器概念本身;容器定義的迭代器型別;某個迭代器物件

15、但凡使用了迭代器的迴圈體,都不要向迭代器所屬的容器新增元素;

16、迭代器運算必須是同乙個容器中的迭代器

17、遍歷陣列的元素最好也是使用範圍for語句

18、使用陣列初始化vector:指明陣列的首位址和尾後位址

19、指標和陣列:

當使用陣列作為auto變數初始值時推斷得到的型別是指標

當使用decltype關鍵字時不會發生上述轉換

20、內建下標運算子所用的索引值不是無符號型別,與vector和string 不一樣

21、允許使用以空字元結束的字元陣列來初始化string 物件或為string 物件賦值

在string物件的加法運算中允許以空字元結束的字元陣列作為其中乙個運算物件(不能兩個都是)

在string 運算的復合賦值運算中允許使用以空字元結束的字元陣列作為右側的運算物件。

22、const char *str = s.c_str(); 後續的改變了s的值可能是返回的位址失效,解決辦法是,將該陣列重新拷貝乙份;

23、使用範圍for語句處理多維陣列,除了最內層的迴圈外其他所有的迴圈的控制變數都應該是引用型別。因為auto不使用引用會宣告為指標

第3章 字串 向量和陣列

using 宣告語句 編譯器從操作符左側所示作用域尋找右側那個名字 using namespace name 注 標頭檔案中不能有using宣告,標頭檔案中的內容會拷貝到所引用它的檔案中去,會引起名字衝突 標準庫型別string 表示可變長的字串行。包含在string標頭檔案 string的初始化方...

C Primer 第3章 字串 向量和陣列

6 多維陣列 using namespace name 標頭檔案不應包含using宣告 使用等號 初始化乙個變數,實際上執行的是拷貝初始化,編譯器把等號右側的初始值拷貝到新建立的物件中去。如果不使用等號,則執行的是直接初始化。常用操作 getline is,s 從is中讀取一行賦給s,返回is s....

字串 向量和陣列

迭代器介紹 陣列定義和初始化string物件 string物件上的操作 處理string物件中的字元 定義和初始化 vector v1 vector v2 v1 v2中包含有v1中所有元素的副本 vector v2 v1 等價於v2 v1 vector v3 n,va1 v3包含n個重複的v1 ve...