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