看板 C_and_CPP 關於我們 聯絡資訊
我的部份程式碼 如下 想加入iterator operator++的overloading 該怎麼加呢? 譬如++改成一次跳兩個 template <class K, class V> class myhash { public: vector<pair<K,V>> tab; typedef typename vector<pair<K, V>>::iterator iterator; iterator begin(){return tab.begin();} iterator end(){return tab.end();} ... ... }; 如果除了operator++沒有要改其他的operator有沒有比較快的方式呢 除了完全重寫一個class iterator之外 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 110.50.136.134
loveme00835:http://codepad.org/lpVaPw6C 你目前在做的是實作自己 12/21 16:59
loveme00835:的容器, 但是是基於標準容器已有的功能之上, 直接繼承 12/21 17:00
loveme00835:可以直接使用父類的名稱, 但這裡最好用私有繼承, 不建 12/21 17:03
loveme00835:議你把迭代器的操作寫在myhash裡, 更不建議你為了方便 12/21 17:04
loveme00835:把++的功能改寫, 就像 1+2==3, 你改寫成 1+2==-1 不 12/21 17:06
loveme00835:是荒謬嗎? 這就是為啥內建型態的運算子不能被重載, 你 12/21 17:08
loveme00835:也不應該寫出跟標準庫迭代器行為差很多的東西, 不然就 12/21 17:09
loveme00835:另外寫幾個具名函式, 沒人會抱怨 12/21 17:10