SRC:my_vector - SRC
在寫(xiě)這段代碼的過(guò)程中,遇見(jiàn)了“某些函數(shù)如何實(shí)現(xiàn)”這樣的問(wèn)題,于是就參考<STL 源碼剖析>,說(shuō)實(shí)話(huà)這本書(shū)雖然在硬盤(pán)里存在了好久,但直到此時(shí)才用上。其實(shí)在參考的時(shí)候也猶豫了,到底是應(yīng)該完全按照自己的思路寫(xiě),還是借鑒書(shū)上或他人的現(xiàn)有代碼寫(xiě),這種想法致使我當(dāng)時(shí)還想順帶著連allocator類(lèi)也一寫(xiě),但最后的結(jié)果是借鑒并且放棄寫(xiě)allocator,理由是“一步步來(lái)”。
寫(xiě)完這些代碼后,我初步得出這樣的結(jié)論:模板很麻煩,迭代器很麻煩。模板只能看有關(guān)模板的書(shū)了,而對(duì)于迭代器,我起初的想法是能將自己寫(xiě)的容器兼容STL,但現(xiàn)在看來(lái)這很是一個(gè)天真的想法,因?yàn)槲液髞?lái)從論壇得知,STL中的各個(gè)模板間都是有類(lèi)型依賴(lài)的,例如代碼:
int a[]={3,4,6,3,87,654,3,9,8,1,9,10,51};
my_vector<int> test(a,a+13);
sort( test.begin() , test.end() ); // OK!
sort( test.rbegin() , test.rend() ); // 編譯錯(cuò)誤,提示 "“iterator_category”: 不是“my_space::_R_Iterator<Iter_type>”的成員"
P.S. : my_space::_R_Iterator<Iter_type>是我自定義的逆序迭代器類(lèi)
這就意味著,想寫(xiě)出兼容STL的東西,就必須先了解STL的內(nèi)部。于是乎my_vector就只能自?shī)首詷?lè)了,除非我把整個(gè)STL都模仿出來(lái)或者想辦法引入STL中的迭代器。
P.S. : my_vector類(lèi)中的成員還有不少的問(wèn)題尚未被發(fā)現(xiàn)


