作者loveme00835 (高髮箍)
看板C_and_CPP
標題Re: [問題] Standard Template Library觀念釐清
時間Wed Dec 21 11:40:26 2011
※ 引述《pracinverse (改)》之銘言:
: forward_list的iterator是所有STL容器中,唯一的forward iterator
↑ ↑
Type Concept
Concept 描述了對於一個型態操作需求, 如果一個型態符合 Concept 的
要求, 則稱它 模塑(Models) 了該 Concept
一個抽象(Concept), 一個則是具現化的一種實作(Type), 所以你講得並
不正確, vector<int>::iterator 也模塑了 Forward Iterator, 其實滿
足的條件還蠻容易的:
┌──────────────────┐
│ 操作 回傳型態 │
├──────────────────┤
│ X u(a); X │
│ │
│ u = a; X& │
│ a == b convertible to bool │
│ a != b convertible to bool │
│ *a convertible to T │
│ a->m │
│ ++r X& │
│ (void)r++ │
│ *r++ T │
└──────────────────┘
還有對語意的要求有興趣可以看 spec 'Iterators library' 一章
: 其他STL容器的iterator都是bidirectional iterator或random access iterator
: list是環狀雙向鏈結串列
不一定, 只不過這樣實作可以省一個指標去記頭/尾節點
: list的member function end()回傳list的head,
: list的member function begin()回傳list的head所指向的下一個位置
: forward_list就是slist,差別在於前者有標準化
應該說是先有各方實作或需求, 再一個個視平台支援情況納入標準的一部分
http://bit.ly/tuXaPA
抽取各方實作的交集來演化成標準
: unordered_map就是hash_map,差別在於前者有標準化
http://bit.ly/w1oliE
: 以上觀念有誤嗎??
--
★ ★ ★ ★
★ ★ ★ ███ ███ █ █▌█ ██◣ ███ ▋▋█ ★ ★ ★
█▂█ █▃█ █ ███ █▆█ █▄█ ███
★ ★ █ ◣ █ █ █ ▋██ █▆◤ ███ ███ ★ ★
Kim Jae Kyung Koh Woo Ri Cho Hyun Young Kim Ji Sook
φwindyhorse
No Eul Oh Seung A Jung Yoon Hye
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.121.197.115
→ PkmX:板主說得沒錯 bidirectional和random access iterator 12/21 15:11
→ PkmX:forward iterator的一種XD 12/21 15:12
推 pracinverse:THANKS 12/22 21:50