[問題] iterator operator++ overloading

看板C_and_CPP (C/C++)作者 (追夢)時間15年前 (2010/12/21 15:47), 編輯推噓0(008)
留言8則, 1人參與, 最新討論串1/1
我的部份程式碼 如下 想加入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

12/21 16:59, , 1F
http://codepad.org/lpVaPw6C 你目前在做的是實作自己
12/21 16:59, 1F

12/21 17:00, , 2F
的容器, 但是是基於標準容器已有的功能之上, 直接繼承
12/21 17:00, 2F

12/21 17:03, , 3F
可以直接使用父類的名稱, 但這裡最好用私有繼承, 不建
12/21 17:03, 3F

12/21 17:04, , 4F
議你把迭代器的操作寫在myhash裡, 更不建議你為了方便
12/21 17:04, 4F

12/21 17:06, , 5F
把++的功能改寫, 就像 1+2==3, 你改寫成 1+2==-1 不
12/21 17:06, 5F

12/21 17:08, , 6F
是荒謬嗎? 這就是為啥內建型態的運算子不能被重載, 你
12/21 17:08, 6F

12/21 17:09, , 7F
也不應該寫出跟標準庫迭代器行為差很多的東西, 不然就
12/21 17:09, 7F

12/21 17:10, , 8F
另外寫幾個具名函式, 沒人會抱怨
12/21 17:10, 8F
文章代碼(AID): #1D45kc66 (C_and_CPP)
文章代碼(AID): #1D45kc66 (C_and_CPP)