GeekBand class5

1.容器分為sequence containers 、associative containers、unordered containers

其中sequence containers分為array(固定大?。?,vector(不固定大?。?、deque(雙向)、list(雙向鏈表)、forward list(單向鏈表:所占空間比list少)

associative containers(便于查找數(shù)據(jù))包含set、map(元素內(nèi)容不能重復(fù))multiset、multimap(元素內(nèi)容可以重復(fù))

unordered containers中最好的數(shù)據(jù)結(jié)構(gòu)為separate chaining(多條鏈表)

2.使用rand()函數(shù)時(shí)要先設(shè)置種子

3..data傳回容器在內(nèi)存中所占的第一個(gè)地址

4.用bsearch查找前必須先進(jìn)行排序,如用qsort排序。bsearch和qsort在庫cstdlib中

5.vector空間以2倍的方式增長

6.C++11新特性auto自動判斷對象類型,當(dāng)對象為iterator類型時(shí),用auto十分方便。

7.list forward-list deque都有max_size()函數(shù)。

8.容器自身的排序函數(shù)比全局的排序函數(shù)速度快(list 、forward_list)

9.forward_list無push_back函數(shù)而又push_front函數(shù)。(無back 、size)

10.deque是偽連續(xù)數(shù)據(jù)結(jié)構(gòu)

11.deque含有stack queue的性能

12.STL提供六大組件,彼此可以組合套用:

(1)、容器(Containers):各種數(shù)據(jù)結(jié)構(gòu),如:vector、list、deque、set、map。用來存放數(shù)據(jù)。從實(shí)現(xiàn)的角度來看,STL容器是一種class template。

(2)、算法(algorithms):各種常用算法,如:sort、search、copy、erase。從實(shí)現(xiàn)的角度來看,STL算法是一種function template。

(3)、迭代器(iterators):容器與算法之間的膠合劑,是所謂的“泛型指針”。共有五種類型,以及其他衍生變化。從實(shí)現(xiàn)的角度來看,迭代器是一種將operator*、operator->、operator++、operator- -等指針相關(guān)操作進(jìn)行重載的class template。所有STL容器都有自己專屬的迭代器,只有容器本身才知道如何遍歷自己的元素。原生指針(native pointer)也是一種迭代器。

(4)、仿函數(shù)(functors):行為類似函數(shù),可作為算法的某種策略(policy)。從實(shí)現(xiàn)的角度來看,仿函數(shù)是一種重載了operator()的class或class template。一般的函數(shù)指針也可視為狹義的仿函數(shù)。

(5)、配接器(adapters);一種用來修飾容器、仿函數(shù)、迭代器接口的東西。例如:STL提供的queue和stack,雖然看似容器,但其實(shí)只能算是一種容器配接器,因?yàn)樗鼈兊牡撞客耆柚鷇eque,所有操作都由底層的deque供應(yīng)。改變functors接口者,稱為function adapter;改變container接口者,稱為container adapter;改變iterator接口者,稱為iterator adapter。

(6)、配置器(allocators):負(fù)責(zé)空間配置與管理。從實(shí)現(xiàn)的角度來看,配置器是一個(gè)實(shí)現(xiàn)了動態(tài)空間配置、空間管理、空間釋放的class template。

這六大組件的交互關(guān)系:container(容器)通過allocator(配置器)取得數(shù)據(jù)儲存空間,algorithm(算法)通過iterator(迭代器)存取container(容器)內(nèi)容,functor(仿函數(shù))可以協(xié)助algorithm(算法)完成不同的策略變化,adapter(配接器)可以修飾或套接functor(仿函數(shù))。


13.opp數(shù)據(jù)和操作放在一起,Gp將數(shù)據(jù)和操作分開放,(containers algorithms分別自己構(gòu)造,其間以Iterator鏈接,algorithms通過iterator確定操作范圍、取用container元素。)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容