[問題] deque::front() 的回傳型別

看板C_and_CPP (C/C++)作者 (四海‧絕蹤)時間14年前 (2011/08/25 23:55), 編輯推噓3(3023)
留言26則, 9人參與, 最新討論串1/1
開發平台(Platform): BCB2009 問題(Question): deque::front() 回傳的型別? 程式碼(Code):(請善用置底文網頁, 記得排版) 這段 code 是從 deque 節錄部份出來的 template<class _Ty, class _Ax> class deque : public _Deque_val<_Ty, _Ax> { typedef _Deque_val<_Ty, _Ax> _Mybase; typedef typename _Mybase::_Alty _Alloc; typedef typename _Alloc::reference _Reft; typedef _Reft reference; ... reference front() { return (*begin()); } ... }; 小弟對於這一段程式碼有幾個問題 1. deque::front 回傳的是什麼東西? 2. reference 代表什麼意思? 3. 為什麼這段程式碼不是寫 _Ty& front() {} -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.204.7.233

08/26 00:16, , 1F
一般來說front回傳型態有可能是value_type&也可能由
08/26 00:16, 1F

08/26 00:17, , 2F
_Alloc來決定, 因為不一定你定義時寫上deque<int,...>
08/26 00:17, 2F

08/26 00:18, , 3F
他裡面就一定要存int元素, 也可以存某些奇怪的類別,
08/26 00:18, 3F

08/26 00:18, , 4F
的物件, 但是卻定義了 operator int()做隱式轉型, 這
08/26 00:18, 4F

08/26 00:19, , 5F
在廣泛使用proxy的程式碼非常常見, 不直接使用_Ty&就
08/26 00:19, 5F

08/26 00:20, , 6F
想藉由多一層間接性來讓你有擴充的餘地
08/26 00:20, 6F

08/26 00:22, , 7F
想問一下板主:這方面的知識要怎麼學習 XD
08/26 00:22, 7F

08/26 00:22, , 8F
如果沒解釋,就算語法看得懂,我也不知道為什麼要這麼做
08/26 00:22, 8F

08/26 00:27, , 9F
泛型寫著寫著, 遇到需要 擴充容器/統一介面 的時候,
08/26 00:27, 9F

08/26 00:28, , 10F
自然會發生這種問題 XD
08/26 00:28, 10F

08/26 00:32, , 11F
唔,對我來說泛型還是沒那麼直覺...orz
08/26 00:32, 11F

08/26 00:39, , 12F
對小弟我來說, C++根本就不直覺...Orz
08/26 00:39, 12F

08/26 00:53, , 13F
物件導向我還可以接受,不過Template真的不太會應用 orz
08/26 00:53, 13F

08/26 01:12, , 14F
我還是乖乖用void*好了...
08/26 01:12, 14F

08/26 01:17, , 15F
《C++設計新思維》每段都要讓我想半天...
08/26 01:17, 15F

08/26 01:35, , 16F
每個人能接受或喜歡的code style都不盡相同,尤其是當自
08/26 01:35, 16F

08/26 01:36, , 17F
己對於目的與手法有自己一套方法時,更不想認識新的手法.
08/26 01:36, 17F

08/26 01:37, , 18F
除非自己的手法存在什麼危險或不足以處理現況時,才會去
08/26 01:37, 18F

08/26 01:37, , 19F
做改變.
08/26 01:37, 19F

08/26 01:38, , 20F
所以我很佩服守備範圍很廣或者用我看不懂的東西來寫
08/26 01:38, 20F

08/26 01:39, , 21F
C/C++.
08/26 01:39, 21F

08/26 04:32, , 22F
泛型很好呀,有些繼承的問題都可以避免掉 xD
08/26 04:32, 22F

08/26 10:19, , 23F
(用得好可以減少一些繼承產生的轉型問題...)
08/26 10:19, 23F

08/26 10:46, , 24F
C++的template功能還不夠強,所以往往會寫得很難懂
08/26 10:46, 24F

08/26 13:16, , 25F
感謝版主的指導 小弟努力理解中 m(_ _)m
08/26 13:16, 25F

08/26 16:58, , 26F
推 firejox :我還是乖乖用void* 好了
08/26 16:58, 26F
文章代碼(AID): #1ELd2B3X (C_and_CPP)
文章代碼(AID): #1ELd2B3X (C_and_CPP)