[問題] Standard Template Library觀念釐清

看板C_and_CPP (C/C++)作者 (改)時間14年前 (2011/12/04 23:31), 編輯推噓2(203)
留言5則, 4人參與, 最新討論串1/3 (看更多)
最近學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

12/04 23:42, , 1F
使用不符合的iterator會產生compile error
12/04 23:42, 1F

12/04 23:42, , 2F
而不是runtime error
12/04 23:42, 2F

12/05 14:26, , 3F
應該 compile 時就過不了吧 :)
12/05 14:26, 3F

12/06 00:55, , 4F
這也算是template的目的之一,編譯的時候就能發現錯誤
12/06 00:55, 4F

12/13 23:02, , 5F
THANKS
12/13 23:02, 5F
文章代碼(AID): #1Esv8qH5 (C_and_CPP)
文章代碼(AID): #1Esv8qH5 (C_and_CPP)