一直在學(xué)習(xí)STL,用的書籍是王昕譯的《C++ STL 中文版》,學(xué)習(xí)中產(chǎn)生很多問(wèn)題,特在這向各位高手請(qǐng)教,以下問(wèn)題基本是按教材章節(jié)順序給出的,如果您手中也剛好有這樣一本書,那就太好了,這樣就不會(huì)因?yàn)槲依斫獾哪w淺而讓您不明白題意,總之,請(qǐng)各位高手不吝賜教:
STL問(wèn)題系列一
1、《C++STL 中文版》第一章課后習(xí)題:1-4、解釋為什么在所寫算法中使用其他種類的迭代器,而不是隨機(jī)存取迭代器?1-5、解釋為什么寧愿定義一個(gè)僅能通過(guò)迭代器來(lái)存取的數(shù)據(jù)結(jié)構(gòu),而不是讓他可以被隨機(jī)存取呢?
2、《C++STL 中文版》迭代器部分一直介紹輸入、輸去、前向、雙向、隨機(jī)迭代器,然而我以為只要以<iterator>建立的對(duì)象就具有隨機(jī)迭代器的功能,為何討論前向、雙向呢?
3、從《C++STL 中文版》第一章后面的習(xí)題看前向、雙向、隨機(jī)迭代器從性質(zhì)和條件上有較大差別,請(qǐng)問(wèn)這在深層上如何理解呢?
4、《C++STL 中文版》第二章習(xí)題:2-3“當(dāng)T和U中有一個(gè)是const類型時(shí),我們可能需要經(jīng)常構(gòu)造一個(gè)pair<T,U>對(duì)象。下面的定義是否可以達(dá)到這樣的效果?如果不可以,請(qǐng)說(shuō)出你的理由。
template<class T,class U>inline pair<T,U> make_pair(T& x,U& y)
{return (pair<T,U> (x,y));}”
5、《C++STL 中文版》2-4“請(qǐng)描述出一種可能的編碼情況,使得表達(dá)式 x.first < y.first ||
!(y.first < x.first) && x.second < y.second 并不等同于 x.first < y.first || x.first == y.first && x.second < y.second。”
6、STL在他的文件中定義了指針和引用,但同時(shí)還總是定義常指針和常引用,為何兩者必須分開實(shí)現(xiàn)呢?
7、《C++STL 中文版》第四章:4-6“寫出一個(gè)分配器,它將對(duì)象存儲(chǔ)在一個(gè)磁盤文件中,并且維護(hù)一個(gè)小小的高速緩存來(lái)存儲(chǔ)程序內(nèi)存中的有效對(duì)象。”
8、《C++STL 中文版》第四章:4-7“在那種情況下,分配器應(yīng)該以與模板類allocator不一致的方式來(lái)定義成員函數(shù)construct和destroy?”
9、<algorithm>文件中sort_heap函數(shù)功能:void sort_heap(RanIt first, RanIt last)重排由區(qū)間[first,last)中的迭代器指定的序列,產(chǎn)生一個(gè)按 operator <排序的序列。但是最初的序列也必須是一個(gè)同樣按 operator < 排序的堆。這樣看,那該函數(shù)的實(shí)際意義呢?