作者pracinverse (改)
看板C_and_CPP
標題[問題] Standard Template Library觀念釐清
時間Sun Dec 4 23:30:58 2011
最近學STL有些觀念待釐清:
STL中的iterator有分input iterator, output iterator
forward iterator, bidirectional iterator, random access iterator五種。
越後面的的iterator功能會包含前面iterator的功能,
但各iterator之間沒有實際的繼承關係
algorithm並不會替輸入的iterator檢查他是屬於哪一種iterator
(除非該algorithm對不同的iterator有不同的實作方式)
若某algorithm需要輸入的是random access iterator,
但使用者輸入的是bidirectional iterator,則會在runtime產生錯誤,
因為使用了bidirectional iterator所沒有實作的操作,
以上的觀念有誤嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.240.153.206
推 littleshan:使用不符合的iterator會產生compile error 12/04 23:42
→ littleshan:而不是runtime error 12/04 23:42
推 bigpigbigpig:應該 compile 時就過不了吧 :) 12/05 14:26
→ iamstudent:這也算是template的目的之一,編譯的時候就能發現錯誤 12/06 00:55
→ pracinverse:THANKS 12/13 23:02