Re: [情報] 作業 1.2 中的 string mp

看板EE_DSnP作者 (Duck)時間11年前 (2012/10/07 18:36), 編輯推噓3(3016)
留言19則, 5人參與, 最新討論串2/2 (看更多)
: * class xStr 的 constructor 會 take 一個 string, : 然後呼叫 "static char xMap(char c)" 把它換成 mapped string : 也就是說,xMap(c) 裏頭應該要利用到 "string mp", : 同時也要處理一些當 c 不是字母的情況。 : 先這樣,如有不清楚在提問!! xStr的constructor xStr(const string& s): _str(s) { // TODO } 這裡不是要收一個s把他convert完再存到_str裡面嗎 那為什麼這裡會有 : _str(s) 為什麼_str要先設定成還沒convert前的版本勒@@? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.25.107

10/07 18:45, , 1F
我好像有點瞭了= = 再開新變數的話會浪費空間減低效能Orz
10/07 18:45, 1F

10/07 18:52, , 2F
是嗎? 我也好奇
10/07 18:52, 2F

10/07 18:57, , 3F
我的理解是先將s copy給_str,然後再convert _str
10/07 18:57, 3F

10/07 18:58, , 4F
希望有強者可以確切的解答....
10/07 18:58, 4F

10/07 19:05, , 5F
就跟樓上說的一樣 如果你先開一個變數存s 再改s再存到_str
10/07 19:05, 5F

10/07 19:05, , 6F
不如直接存給_str 改_str
10/07 19:05, 6F

10/07 19:06, , 7F
↑再改變數
10/07 19:06, 7F

10/07 19:15, , 8F
不過在這個例子裡 應該可以對s直接用xMap再存給_str吧
10/07 19:15, 8F

10/07 19:28, , 9F
不行吧 他是const &s
10/07 19:28, 9F

10/07 20:13, , 10F
xMap裡預設的prototrype是(char c) 在這邊有copy才改
10/07 20:13, 10F

10/07 20:15, , 11F
不過我剛剛想刪掉:_str(s)來印証時才發現 保留的話_str
10/07 20:15, 11F

10/07 20:15, , 12F
的size才會跟本來s一樣 然後我的implement這樣較方便XD
10/07 20:15, 12F

10/07 23:47, , 13F
大家討論得應該是蠻清楚了的吧!!
10/07 23:47, 13F

10/07 23:47, , 14F
沒錯!! 為了避免多 copy 一份 string, 所以傳入的是
10/07 23:47, 14F

10/07 23:48, , 15F
string&, 但又要避免改到外面傳進來的 string, 所以加上
10/07 23:48, 15F

10/07 23:49, , 16F
const. 而如果在 constructor 裡面先把外面傳進來的 string
10/07 23:49, 16F

10/07 23:49, , 17F
copy, 改好之後再存到 _str, 其實是多此一舉。所以直接
10/07 23:49, 17F

10/07 23:50, , 18F
在 constructor 的 initialization list 上把 s copy 給
10/07 23:50, 18F

10/07 23:50, , 19F
_str 是最有效率的!
10/07 23:50, 19F
文章代碼(AID): #1GSLiH-u (EE_DSnP)
文章代碼(AID): #1GSLiH-u (EE_DSnP)