青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

C++編程失樂園

致力于解決論壇的不足,探討C++的原理

C++隨筆 之 C++標(biāo)準(zhǔn)庫5(原創(chuàng))--STL

STL 是個部件庫 (component library) ,其中的部件包括有容器 (container ,儲存任意類型對象的對象 ) 和算法。只要用戶對自己定義的部件做點小小的要求, STL 中的算法就可以工作在用戶自定義的容器上,或者 STL 中的容器可以使用用戶自定義的算法。
我們可以把軟件部件想象成一個三位空間。第一維表示數(shù)據(jù)類型(int, double, char, …),第二維表示容器(array, linked-list, …)

第三維表示算法
(sort, merge, search, …)

STL 包含 5 個主要的部分,
·算法 (Algorithm) :能運行在不同容器 (container) 上的計算過程

·容器 (Container) :能夠保留并管理對象的對象

·迭代器 (Iterator) :算法存取容器 (algorithm-access to containers) 的抽象,以便算法可以應(yīng)用在不同的容器上

·函數(shù)對象 (Function Object) :定義了函數(shù)調(diào)用操作符 (operator()) 的類

·適應(yīng)器 (Adaptor) :封裝一個部件以提供另外的接口 ( 例如用 list 實現(xiàn) stack)


正是因為有了Iterator,算法才和容器分開了.

容器
(Container) 是能夠保存其他類型的對象的類。容器形成了 STL 的關(guān)鍵部件。當(dāng)書寫任何類型軟件的時候,把特定類型的元素集聚起來都是很至關(guān)重要的任務(wù)。

?????? STL 中有順序容器 (Sequence Container) 和關(guān)聯(lián)容器 (Associative Container)

STL 中支持的容器總結(jié)如下:

順序容器 (Sequence Container)

向量 (Vector)

?

雙向隊列 (Deque)

?

線性表 (List)

關(guān)聯(lián)容器 (Associative Container)

集合 (Set)

?

多集合 (MultiSet)

?

映射 (Map)

?

多映射 (MultiSet)


迭代器
(Iterator) 是指針 (pointer) 的泛化,它允許程序員以相同的方式處理不同的數(shù)據(jù)結(jié)構(gòu) ( 容器 ) STL 中有 5
中類型的迭代器,它們分別滿足一定的要求。不同的迭代器要求定義的操作不一樣。
輸入和輸出迭代器
向前迭代器
雙向迭代器
任意存取迭代器

算法

STL 庫中的算法都以迭代器類型為參數(shù),這就和數(shù)據(jù)結(jié)果的具體實現(xiàn)分離開了。基于此,這些算法被稱作基本算法 (generic algorithm)
如“尋找(Find)”、“鄰居尋找(Adjacent find)”、“計數(shù)(Count)”、“不匹配(Mismatch)”、“相等(Equal)”、“搜索(Search)
拷貝(Copy)”、“交換(Swap)”、“變換(Transform)”、“替換(Replace)、“填充(Fill)、“產(chǎn)生(Generate)、“遷移(Remove)、“唯一(Unique)、“翻轉(zhuǎn)(Reverse)、“旋轉(zhuǎn)(Rotate)、“任意洗牌(Random shuffle)、“分區(qū)(Partitions)

適應(yīng)器
(Adaptor) 是提供接口映射的模板類 (Adaptors are template classes that provide interface mappings)
。適應(yīng)器基于其他類來實現(xiàn)新的功能,成員函數(shù)可以被添加、隱藏,也可合并以得到新的功能。

(Stack)

?????? 棧可以用向量 (vector) 、線性表 (list) 或雙向隊列 (deque) 來實現(xiàn):

stack<vector<int>>?????? s1;

stack<list<int>?????? >???? s2;

stack<deque<int>>s3;

隊列 (Queue)

?????? 隊列可以用線性表 (list) 或雙向隊列 (deque) 來實現(xiàn) ( 注意 vector container 不能用來實現(xiàn) queue
因為
vector 沒有成員函數(shù) pop_front! )

queue<list<int>>??? q1;

queue<deque<int>>?????? q2;

優(yōu)先級隊列 (Priority Queue)

?????? 優(yōu)先級隊列可以用向量 (vector) 或雙向隊列 (deque) 來實現(xiàn) ( 注意 list container 不能用來實現(xiàn) queue
因為
list 的迭代器不是任意存取 iterator ,而 pop 中用到堆排序時是要求 random access iterator ! )

priority_queue<vector<int>, less<int>>??????? pq1;??????? // 使用遞增 less<int> 函數(shù)對象排序

priority_queue<deque<int>, greater<int>>??? pq2; ????? // 使用遞減 greater<int> 函數(shù)對象排序

迭代適應(yīng)器

逆向迭代器 (Reverse Iterator)

?????? 顧名思義,逆向迭代器的遞增是朝反方向前進的。對于順序容器 (vector, list deque) ,其成員函數(shù) rbegin() rend() 都返回了相應(yīng)的逆向迭代器:

list<int> l;

for (int i = 1; i < 5; i++)

?????? l.push_back(i);

copy(l.rbegin(), l.rend(), ostream_iterator<int> (cout, “ “));

輸出結(jié)果是: 4 3 2 1

?

插入迭代器 (Insert Iterator)

?????? 插入迭代器簡化了向容器中插入元素的工作。插入迭代器指定了向容器中插入元素的位置。 STL 中有三種插入迭代器:

·向后插入 (back_insert_iterator) ,在容器尾部插入

·向前插入 (front_insert_iterator) ,在容器頭部插入

·插入 (insert_iterator) ,在容器中任一位置

STL 中提供了三個函數(shù)分別構(gòu)造相應(yīng)的插入迭代器:

· back_inserter

· front_inserter

· inserter

?

原始存儲迭代器 (Raw Storage Iterator)

?????? 該迭代器允許算法將其結(jié)果保存進沒有初始化的內(nèi)存中。

函數(shù)適應(yīng)器

否認(rèn)者 (Negator)

?????? 有兩個否認(rèn)者 not1 not2 分別是一元和二元函數(shù),它們分別使用一元和二元的謂詞 (Predicate) ,返回的是謂詞的結(jié)果的取反。

?

包扎者 (Binder)

?????? STL 中有兩個包扎者函數(shù) bind1st bind2nd ,可以將一些值限定在指定區(qū)間中。

?

函數(shù)指針的適應(yīng)器 (Adaptors for pointers to function)

?????? STL 中的算法和容器一般都需要函數(shù)對象 (function object) 作為參數(shù)。如果想用到常用的 C++ 函數(shù)時,可以用 ptr_fun 把普通函數(shù)轉(zhuǎn)換成函數(shù)對象。比如 ptr_fun(strcmp) 就把常用的串比較函數(shù) strcmp 包裝成一個函數(shù)對象,就可用在 STL 算法和容器中了。

posted on 2007-01-04 10:48 木木頭 閱讀(1540) 評論(2)  編輯 收藏 引用 所屬分類: C++特性

評論

# re: C++隨筆 之 C++標(biāo)準(zhǔn)庫5(原創(chuàng))--STL 2007-01-04 13:01 pengkuny

看來STL功能很強大,我得好好學(xué)一下  回復(fù)  更多評論   

# re: C++隨筆 之 C++標(biāo)準(zhǔn)庫5(原創(chuàng))--STL 2007-10-11 21:24 ptrrrrr

文中的Stack,Queue和priority_queue舉的例子,全都少了一個參數(shù),而且書寫有點問題

比如stack<vector<int>> s1;

應(yīng)該是stack<int, vector<int> > s1;  回復(fù)  更多評論   

導(dǎo)航

<2007年12月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

統(tǒng)計

常用鏈接

留言簿(3)

隨筆分類(29)

搜索

最新隨筆

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            蜜桃久久av| **性色生活片久久毛片| 久久er99精品| 久久久国产一区二区| 一区二区三区四区五区在线| 午夜精品一区二区在线观看| 亚洲第一精品福利| 欧美国产亚洲另类动漫| 欧美一区二区三区婷婷月色| 欧美激情网站在线观看| 久久婷婷综合激情| 国产精品欧美日韩| 亚洲国产影院| 欧美中文日韩| 亚洲一区综合| 欧美日韩久久| 欧美一区二区精品在线| 精品成人久久| 在线一区欧美| 亚洲天堂av图片| 欧美成人蜜桃| 欧美成人性生活| 精品99视频| 欧美视频一区在线观看| 亚洲欧洲精品一区二区精品久久久 | 亚洲成人资源| 欧美日韩综合在线| 久久国产精品网站| 久久精品国产精品亚洲精品| 国产精品日韩欧美一区二区| 久久天堂国产精品| 免费一级欧美片在线播放| 国产自产在线视频一区| 午夜视频久久久| 亚洲国产视频一区二区| 久久久久久高潮国产精品视| 国产日韩精品一区二区浪潮av| 亚洲精品视频在线观看免费| 亚洲精选视频在线| 欧美女激情福利| 亚洲视频免费| 亚洲精品欧美精品| 国产精品伦一区| 亚洲免费视频观看| 小处雏高清一区二区三区| 国产精品一区视频| 午夜欧美大尺度福利影院在线看| 亚洲欧洲日韩在线| 免费一区二区三区| 久久精品欧美日韩精品| 亚洲视频在线观看免费| 亚洲国产欧美在线| 欧美日本在线视频| 蜜桃精品久久久久久久免费影院| 久久福利一区| 久久av免费一区| 亚洲欧美不卡| 亚洲专区在线| 亚洲综合不卡| 亚洲一区黄色| 欧美成人a视频| 亚洲一卡久久| 影音先锋久久久| 欧美日韩在线亚洲一区蜜芽| 欧美jizz19hd性欧美| 一区二区激情| 久久天堂成人| 久久视频这里只有精品| 久久精品官网| 久久阴道视频| 美女久久一区| 欧美国产综合视频| 午夜亚洲福利在线老司机| 精品成人国产在线观看男人呻吟| 国产日韩专区在线| 国产精品一区视频| 国产欧美日韩亚洲| 国产午夜精品理论片a级大结局| 国产精自产拍久久久久久蜜| 国产日韩精品入口| 国内成人在线| 在线成人小视频| 亚洲欧洲日夜超级视频| 国产日产亚洲精品系列| 国产主播一区二区| 亚洲电影免费在线 | 欧美中在线观看| 久久久www成人免费无遮挡大片 | 亚洲毛片在线看| 亚洲视频网在线直播| 午夜精品剧场| aaa亚洲精品一二三区| 欧美承认网站| 亚洲日本中文字幕| 免费欧美日韩| 亚洲激情婷婷| 亚洲在线视频免费观看| 欧美在线视频一区二区| 蜜臀av在线播放一区二区三区| 欧美精选一区| 国产伦精品一区二区三区视频黑人| 韩国v欧美v日本v亚洲v| 国产精品系列在线| 伊人色综合久久天天五月婷| 亚洲精品欧洲| 亚洲人成7777| 欧美亚洲在线播放| 欧美**字幕| 亚洲午夜国产一区99re久久| 亚洲日韩欧美视频一区| 亚洲欧美日韩精品久久亚洲区| 久久久噜噜噜久久中文字幕色伊伊| 欧美亚洲视频一区二区| 亚洲欧美一区二区三区久久| 美女日韩在线中文字幕| 国产精品a级| 国产精品多人| 国产精品黄页免费高清在线观看| 狠狠入ady亚洲精品经典电影| 99在线精品观看| 一区二区不卡在线视频 午夜欧美不卡'| 亚洲欧美激情一区二区| 亚洲午夜久久久久久久久电影院| 久久久久久日产精品| 久久九九99视频| 亚洲理论在线观看| 久久久91精品国产一区二区精品| 欧美午夜精品理论片a级按摩| 伊人婷婷久久| 久久精品免费| 亚洲午夜精品17c| 欧美黑人国产人伦爽爽爽| 黄色小说综合网站| 午夜一区在线| 99riav国产精品| 欧美成人免费播放| 一色屋精品视频免费看| 久久精品国产综合精品| 一本大道久久a久久精二百| 男女激情视频一区| 揄拍成人国产精品视频| 欧美中文字幕第一页| 在线亚洲免费| 欧美日韩亚洲一区三区| 亚洲裸体视频| 亚洲国产精彩中文乱码av在线播放| 最新国产乱人伦偷精品免费网站| 久久久精品五月天| 国产日产欧产精品推荐色 | 亚洲欧美国产制服动漫| 亚洲日韩欧美视频| 你懂的一区二区| 亚洲国产欧美一区二区三区久久| 久久午夜精品| 久久久www成人免费精品| 国内视频一区| 久久久久国产免费免费| 欧美一区激情| 国产亚洲女人久久久久毛片| 亚洲精品日日夜夜| 亚洲福利视频一区二区| 玖玖综合伊人| 国产乱肥老妇国产一区二| 亚洲欧美日韩一区在线| 亚洲午夜一区二区| 欧美视频一区二区在线观看| 亚洲亚洲精品在线观看| 一区二区三区日韩精品| 欧美午夜激情视频| 亚洲欧美国产精品桃花| 中文国产成人精品| 国产精品一二一区| 久久久精品视频成人| 久久久蜜桃精品| 亚洲国产精品一区| 久久精品国亚洲| 久久久久久网址| 亚洲人成小说网站色在线| 亚洲日韩中文字幕在线播放| 欧美日韩中国免费专区在线看| 亚洲一区中文字幕在线观看| 亚洲欧美偷拍卡通变态| 黄色日韩精品| 亚洲三级免费| 国产精品一区二区在线| 久久综合中文色婷婷| 亚洲综合国产精品| 精品成人在线观看| 亚洲国语精品自产拍在线观看| 欧美日韩亚洲另类| 欧美在线免费| 农村妇女精品| 亚洲欧美另类久久久精品2019| 欧美在线视频免费观看| 亚洲精品三级| 午夜精品福利在线观看| 亚洲国产成人在线播放| 亚洲无限乱码一二三四麻| 在线国产精品播放| 一本久道久久综合婷婷鲸鱼|