看板 EE_DSnP 關於我們 聯絡資訊
: * 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
XDucka:我好像有點瞭了= = 再開新變數的話會浪費空間減低效能Orz 10/07 18:45
ss355227:是嗎? 我也好奇 10/07 18:52
shps90060505:我的理解是先將s copy給_str,然後再convert _str 10/07 18:57
shps90060505:希望有強者可以確切的解答.... 10/07 18:58
XDucka:就跟樓上說的一樣 如果你先開一個變數存s 再改s再存到_str 10/07 19:05
XDucka:不如直接存給_str 改_str 10/07 19:05
XDucka: ↑再改變數 10/07 19:06
yuting1105:不過在這個例子裡 應該可以對s直接用xMap再存給_str吧 10/07 19:15
XDucka:不行吧 他是const &s 10/07 19:28
yuting1105:xMap裡預設的prototrype是(char c) 在這邊有copy才改 10/07 20:13
yuting1105:不過我剛剛想刪掉:_str(s)來印証時才發現 保留的話_str 10/07 20:15
yuting1105:的size才會跟本來s一樣 然後我的implement這樣較方便XD 10/07 20:15
ric2k1:大家討論得應該是蠻清楚了的吧!! 10/07 23:47
ric2k1:沒錯!! 為了避免多 copy 一份 string, 所以傳入的是 10/07 23:47
ric2k1:string&, 但又要避免改到外面傳進來的 string, 所以加上 10/07 23:48
ric2k1:const. 而如果在 constructor 裡面先把外面傳進來的 string 10/07 23:49
ric2k1:copy, 改好之後再存到 _str, 其實是多此一舉。所以直接 10/07 23:49
ric2k1:在 constructor 的 initialization list 上把 s copy 給 10/07 23:50
ric2k1:_str 是最有效率的! 10/07 23:50