《c++primer》ch3 字符串遏片、向量和數(shù)組

3.1 命名空間的using聲明

每個名字都需要獨立的using聲明

頭文件中不應該包含using聲明

因為頭文件的內(nèi)容會拷貝到所有引用它的文件夾中去嘹害,如果頭文件中有using聲明,可能會產(chǎn)生始料未及的名字沖突吮便。

3.2 標準庫類型string

3.2.1 定義和初始化string對象

string s1;   //默認初始化
string s2=s1;  //s2是s1的副本
string s2(s1); //等價于string s2=s1,s2是s1的副本
string s3="hiya";  //s3是字面值的副本笔呀,但是不包含字面值最后的那個空字符
string s3("hiya");  //等價于string s3="hiya"
string s4(n,'c');  //把s4初始化為連續(xù)n個字符c組成的字符串

3.2.2 string對象上的操作

  • 讀寫string對象
  • 讀取未知數(shù)量的string對象
  • 使用getline讀取一整行
  • string的empty和size操作

string:size_type類型

size_type是一種無符號整形數(shù),如果在表達式中混用了帶符號數(shù)和無符號數(shù)會產(chǎn)生意想不到的后果髓需。

比較string對象

按字典順序

字面值和string類型相加

//錯誤的方式
string s="hello"+"," //錯誤许师,因為兩個運算對象都不是string,不能把兩個字面值直接相加
string s1="hello"+s1+"," //正確

** 字符串字面值與string是不同的類型 **

ex3.3 string類的輸入運算和getline函數(shù)分別如何處理字符串

string的標準輸入:自動忽略字符串開頭的空白僚匆,從第一個真正的字符開始讀取微渠,直到下一個空白為止
getline函數(shù):從給定的輸入流中讀取,直到遇到換行符為止咧擂。

3.3 標準庫類型vector

vector是一種類模板逞盆,需要后加一堆尖括號,在括號內(nèi)放上信息松申。

3.3.1 定義和初始化vector對象

  • 1.使用拷貝初始化
  • 2.如果提供一個類內(nèi)的初始值云芦,只能使用拷貝初始化或者花括號形式初始化
  • 3.如果提供的是初始值元素值的列表,則只能使用花括號初始化贸桶,而不能使用圓括號
  • 4.創(chuàng)建指定數(shù)量的元素:采用圓括號

3.3.2 像vector中添加元素

push_back:像一個值添加到vector的尾部舅逸。(如果開始不知道有多少元素,c++中刨啸,一般先創(chuàng)建一個空的vector然后像其中添加元素最好)
不能使用下標形式添加元素堡赔,只能對確知已存在的元素執(zhí)行下標操作。

3.4 迭代器介紹

迭代器這個名詞可能有三種不同的含義:可能是迭代器概念本身设联,可能是容器定義的類型善已,還可能指某個迭代器對象。
某些對Vector對象的操作回事迭代器失效:一個是不能在范圍for循環(huán)內(nèi)向vector中添加元素离例,另一個是任何一種可能改變vector對象容量的操作换团,都有可能是vector對象的迭代器失效。

迭代器的算數(shù)運算

可以令迭代器和一個整數(shù)值相加(或相減)宫蛆,其返回值是向前(或向后)移動了若干個位置的迭代器艘包。
迭代器之間的比較:參與比較的迭代器必須合法且指向同一個容器的元素(或者尾元素的下一個位置)

3.5 數(shù)組

數(shù)組與vector的區(qū)別:數(shù)組的大小確定不變,不能隨意像數(shù)組中添加元素耀盗。性能很好想虎,但是損失了靈活性。

3.5.1 定義和初始化數(shù)組

數(shù)組是一種復合類型叛拷,數(shù)組的維度必須是一個常量表達式舌厨。
定義數(shù)組的時候必須指定數(shù)組的類型。同時忿薇,數(shù)組的元素應該為對象裙椭,不存在引用的數(shù)組躏哩。

字符數(shù)組的特殊性

char a1[]={'C','+','+'};  //列表初始化,沒有空字符
char a2[]={'C','+','+'};  //列表初始化揉燃,含有顯式的空字符
char a3[]="C++";   //自動添加表示字符串結(jié)束的空字符

不允許拷貝和賦值

復雜的數(shù)組聲明

** 要想理解數(shù)組的聲明的含義扫尺,最好的辦法是從數(shù)組的名字開始按照由內(nèi)向外的順序閱讀 **

int &refs[10]=...  //  錯誤!不存在數(shù)組的引用
int (*Parray)[10]=&arr; //Parray指向一個含有10個整數(shù)的數(shù)組
int (&arrRef)[10]=arr   //arrRef引用一個含有10個整數(shù)的數(shù)組
int *ptrs[10];  //ptrs是一個含有10個整型指針的數(shù)組

3.5.2 訪問數(shù)組元素

  • 數(shù)組下標為** size_t類型 **炊汤,是一種機器相關(guān)的無符號類型正驻。

3.5.3 指針和數(shù)組

使用數(shù)組的時候編譯器一般會把它轉(zhuǎn)化成指針

指針也是迭代器

允許使用遞增運算符將指向數(shù)組元素的指針向前移動到下一個位置上

標準庫函數(shù)begin和end

3.5.4 C風格字符串

C風格字符串不是一種類型,而是為了表達和使用字符串而形成的一種約定俗成的寫法婿崭。
C風格字符串和字符數(shù)組的關(guān)系拨拓,尤其需要考慮串尾是否含有空字符。
** 問題:為什么沒有指針相加氓栈? **
指著也是一個對象渣磷,與指針有關(guān)的屬性有三個,分別是指針的值(是一個內(nèi)存地址值)授瘦、指針所指的對象醋界、指針本身在內(nèi)存中的存儲位置。顯然把兩個地址加在一起是沒有意義的提完。

3.5.5 與舊代碼的接口

混用string對象和C風格字符串

  • 允許使用以空字符結(jié)束的字符數(shù)組來初始化string對象或為string對象賦值
  • 在string對象的加法運算中允許使用以空字符結(jié)束的字符數(shù)組作為其中一個運算對象(但不能兩個都是)形纺;在string對象的賦值運算中允許以空字符串結(jié)束的字符數(shù)組作為右側(cè)的運算對象。

使用數(shù)組初始化vector對象

允許使用數(shù)組初始化vector對象徒欣,只需要指明拷貝區(qū)域的首元素地址和尾后地址即可逐样。但不能使用一個數(shù)組為另一個內(nèi)置類型的數(shù)組賦初值,也不能使用vector對象初始化數(shù)組打肝。

3.6 多維數(shù)組

嚴格來說脂新,C++語言中沒有多維數(shù)組,通常所說的多維數(shù)組其實是數(shù)組的數(shù)組粗梭。
當一個數(shù)組的元素仍然是數(shù)組時争便,通常使用兩個維度來定義它:一個維度表示數(shù)組本身大小,另一個維度表示其元素(也是數(shù)組)大小断医。

int ia[3][4] //大小為3的數(shù)組滞乙,每個元素是含有4個整數(shù)的數(shù)組
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市鉴嗤,隨后出現(xiàn)的幾起案子斩启,更是在濱河造成了極大的恐慌,老刑警劉巖醉锅,帶你破解...
    沈念sama閱讀 211,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件兔簇,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機男韧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來默垄,“玉大人此虑,你說我怎么就攤上這事】诙В” “怎么了朦前?”我有些...
    開封第一講書人閱讀 157,435評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長鹃操。 經(jīng)常有香客問我韭寸,道長,這世上最難降的妖魔是什么荆隘? 我笑而不...
    開封第一講書人閱讀 56,509評論 1 284
  • 正文 為了忘掉前任恩伺,我火速辦了婚禮,結(jié)果婚禮上椰拒,老公的妹妹穿的比我還像新娘晶渠。我一直安慰自己,他們只是感情好燃观,可當我...
    茶點故事閱讀 65,611評論 6 386
  • 文/花漫 我一把揭開白布褒脯。 她就那樣靜靜地躺著,像睡著了一般缆毁。 火紅的嫁衣襯著肌膚如雪番川。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,837評論 1 290
  • 那天脊框,我揣著相機與錄音颁督,去河邊找鬼。 笑死缚陷,一個胖子當著我的面吹牛适篙,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播箫爷,決...
    沈念sama閱讀 38,987評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼嚷节,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了虎锚?” 一聲冷哼從身側(cè)響起硫痰,我...
    開封第一講書人閱讀 37,730評論 0 267
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎窜护,沒想到半個月后效斑,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,194評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡柱徙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,525評論 2 327
  • 正文 我和宋清朗相戀三年缓屠,在試婚紗的時候發(fā)現(xiàn)自己被綠了奇昙。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,664評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡敌完,死狀恐怖储耐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情滨溉,我是刑警寧澤什湘,帶...
    沈念sama閱讀 34,334評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站晦攒,受9級特大地震影響闽撤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜脯颜,卻給世界環(huán)境...
    茶點故事閱讀 39,944評論 3 313
  • 文/蒙蒙 一哟旗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧伐脖,春花似錦热幔、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蠕啄,卻和暖如春场勤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背歼跟。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評論 1 266
  • 我被黑心中介騙來泰國打工和媳, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人哈街。 一個月前我還...
    沈念sama閱讀 46,389評論 2 360
  • 正文 我出身青樓留瞳,卻偏偏與公主長得像,于是被迫代替她去往敵國和親骚秦。 傳聞我的和親對象是個殘疾皇子她倘,可洞房花燭夜當晚...
    茶點故事閱讀 43,554評論 2 349

推薦閱讀更多精彩內(nèi)容