作者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