作者johnjohnlin (LYSin8)
看板EE_DSnP
標題[請益] HW5 的資料是要隨時保持 sorted 的嗎?
時間Fri Dec 3 00:36:45 2010
嗯...根據我在上課聽到的內容好像是要
作業中也有這句話
void pop_back(): remove the
last (largest) element in the ADT
之類的
大致來講是沒問題
可是我有一點小疑問
就是 TODO 裡面有要作這件事
T& operator [] (size_t i) {}
這樣來說的話
如果
Array<int> a;
for (blahblah)
a.insert (rand ());
到這還能保持 properly ordered
可是
如果我隨便 assign
a[3] = -1;
順序不就馬上亂掉了?
而且這是 class 無法管理到的行為
又不太可能一直去作 check...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.243.89
1F:推 ric2k1:Uh, 這的確是 Array class 設計上的疏失... 為了保持資料 12/03 06:31
2F:→ ric2k1:都是 sorted, 應該不能有像是 push_back(), push_front() 12/03 06:31
3F:→ ric2k1:以及 operator [] 等動作. 不過還好 adtTest.* 裏頭沒有 12/03 06:32
4F:→ ric2k1:將 operator 用在 left hand side 的情形...所以不會有問題 12/03 06:33
5F:→ ric2k1:大家可以假設 operator [] 不會用在 LHS, 以後我再來修正 12/03 06:34
6F:→ ric2k1:這個 spec! 12/03 06:34
7F:推 wintercobra:像是DList裡面有insert(T& x),但是要insert在哪裡呢? 12/04 15:13
8F:→ wintercobra:因為跟真正的STL用法不太一樣,不知道該把insert()寫成 12/04 15:14
9F:→ wintercobra:push_front(),push_back(),還是...? 12/04 15:15
10F:→ wintercobra:還是...要同時sort好? 12/04 15:30
11F:推 aitjcize:似乎是要sort好喔 12/04 15:34
12F:推 wintercobra:但T是個未定型態,要如何sort?(比方說T=某class A) 12/04 15:57
13F:推 stimim:你可以假設T這個型態有 < 和== 運算子可以用 12/04 16:10
14F:推 ric2k1:嗯,你可以直接用 < 或/與 == 等operators來比較資料的大小 12/04 16:27
15F:推 TommyKSHS:其實還可以 cout << 它 … (我這樣算不算洩露機密 = = 12/04 17:01
16F:推 concise:為什麼認為這是機密 = = 12/04 18:44
17F:推 TommyKSHS:因為 spec 沒有說阿 噗噗 12/04 19:10
18F:推 wintercobra:哈,瞭了,謝謝 12/04 21:06
19F:推 TommyKSHS:囧 剛剛才發現 原來 adtTest.cpp 還有 adtTest.h 是 12/05 19:58
20F:→ TommyKSHS:附在 main 資料幾裡的 … 之前花了好多時間用 gdb 看= = 12/05 19:59