網(wǎng)站建設(shè)一對一培訓(xùn)seo根據(jù)什么具體優(yōu)化
前言
今天主要講類相關(guān)概念。
構(gòu)造和析構(gòu)函數(shù)是否可以拋出異常
在構(gòu)造函數(shù)中拋出異常,控制權(quán)會(huì)轉(zhuǎn)出構(gòu)造函數(shù)之外,對象的析構(gòu)函數(shù)不會(huì)被調(diào)用,造成內(nèi)存泄漏。
如果析構(gòu)函數(shù)中拋出異常,而且沒有在當(dāng)?shù)夭蹲?#xff0c;析構(gòu)函數(shù)便執(zhí)行不全。
類如何實(shí)現(xiàn)只能靜態(tài)或動(dòng)態(tài)分配
只能靜態(tài)分配,把new\delete 運(yùn)算符重載為private屬性
只能動(dòng)態(tài)分配,把構(gòu)造和析構(gòu)函數(shù)設(shè)置為protect屬性,用子類動(dòng)態(tài)創(chuàng)建。
什么時(shí)候需要初始化列表
初始化引用成員變量,初始化const成員變量,調(diào)用有一組參數(shù)的基類構(gòu)造函數(shù)、調(diào)用有一組參數(shù)的成員構(gòu)造函數(shù)。
哪些函數(shù)不能是虛函數(shù)
構(gòu)造函數(shù)、內(nèi)聯(lián)函數(shù)、靜態(tài)函數(shù)、友元函數(shù)、普通函數(shù)
簡單介紹STL
STL一共提供六大組件,有容器、算法、迭代器、仿函數(shù)、配接器、配置器,彼此可以組合套用,容器通過配置器取得存儲(chǔ)空間,算法通過迭代器存取容器內(nèi)容,仿函數(shù)協(xié)助算法完成不同策略,配接器可以應(yīng)用于容器。
容器是封裝好的各種數(shù)據(jù)結(jié)構(gòu)。
算法是各種常用的算法,可以對容器內(nèi)的數(shù)據(jù)操作。
迭代器是將一些指針相關(guān)操作重載的類模板。
仿函數(shù)是一種重載了()的類模板,可以幫助算法實(shí)現(xiàn)不同策略
配接器用來修飾容器
配置器負(fù)責(zé)空間配置與管理。
vector
也叫動(dòng)態(tài)數(shù)組,是線性存儲(chǔ)的。隨著元素的加入,內(nèi)部機(jī)制會(huì)自動(dòng)擴(kuò)充空間以容納新元素。當(dāng)有新元素加入時(shí),如果空間足夠則直接插入,如果空間不足,則容量擴(kuò)充至兩倍。擴(kuò)充是重新申請一塊連續(xù)空間,將原有的數(shù)據(jù)拷貝到新空間中,擴(kuò)充后,原有的迭代器會(huì)失效。
list
list是一個(gè)雙向鏈表,每次插入或刪除一個(gè)元素,原有的迭代器不會(huì)失效。
deque
deque是一種雙向開口的連續(xù)線性空間,支持從頭尾兩端進(jìn)行元素插入或刪除操作。deque動(dòng)態(tài)的以分段連續(xù)空間組合而成,隨時(shí)可以添加一段新的空間并連接起來。
stack
是一種先進(jìn)后出的數(shù)據(jù)結(jié)構(gòu),只有一個(gè)出口,允許從最頂端增加或刪除元素。
queue
是一種先進(jìn)先出的數(shù)據(jù)結(jié)構(gòu),允許從最底端加入元素,從頂端取得元素。
heap
不屬于STL組件,而是作為priority_queue的助手,priority_queue 允許用戶以任何次序?qū)⒃赝迫肴萜?#xff0c;取出時(shí)一定是從優(yōu)先級最高的元素開始取。
map和set
map和set都是關(guān)聯(lián)容器,底層是紅黑樹。
map中的元素是鍵值對,關(guān)鍵字起索引的作用,值表示與索引相關(guān)的數(shù)據(jù)。map允許修改值,不允許修改鍵。支持下標(biāo)訪問,如不存在,則加入對應(yīng)的鍵值對。
set是關(guān)鍵字的集合,set每個(gè)元素只包含鍵,不允許修改。
stl迭代器刪除元素
vector和deque使用erase后,后面每個(gè)元素的迭代器都會(huì)失效,erase后返回下一個(gè)有效的迭代器。
map和set使用erase后,當(dāng)前元素迭代器失效,不影響下一個(gè)元素的迭代器。
list使用erase后不影響下一個(gè)元素的迭代器,同時(shí)也會(huì)返回下一個(gè)有效的迭代器。
迭代器的作用
迭代器用于提供一種方法順序訪問一個(gè)聚合對象中各個(gè)元素,而不需要暴露該對象的內(nèi)部表示。
迭代器不是指針,是類模板,表現(xiàn)得像指針,模擬了指針的一些功能,封裝了原生指針,提供比指針更高級的功能。
resize和reserve
resize改變?nèi)萜鲀?nèi)含有元素的數(shù)量。當(dāng),原來的size小于resize的值,則容器新增reszie-size個(gè)元素,元素的值默認(rèn)為0。
reserve用于改變?nèi)萜鞯淖畲笕萘?#xff0c;不會(huì)生成元素,如果reseve的值大于capacity,則重寫申請一塊足夠的內(nèi)存,把原有的對象復(fù)制過來,銷毀之前的內(nèi)存。
后記
雄關(guān)漫道,過關(guān)斬將,你的努力不會(huì)白費(fèi)。