作者littleshan (我要加入劍道社!)
看板C_and_CPP
標題Re: [問題] 為何少有人用c++寫網頁?
時間Wed Apr 20 11:12:50 2011
※ 引述《tinlans ( )》之銘言:
: : 做的事情C++基本上也都能做 (C也可以但字串支援少,所以比較麻煩)
: C 其實還蠻方便的。
: 而且因為是 null-terminated string,可以用一些小技巧加速。
: 比方說把想把 abcdefghi 中間這段傳給某 function。
: 你可以先暫時把 'g' 存在一個 char 變數,並修改成 '\0'。
: 然後丟個指在 'c' 上的 pointer 出去,等 function return 回來再把 'g' 填回去。
: 這樣就整整少了一次 string copy 的時間。
: 一些比較高階的語言使用的 string type,取 sub-string 時大都是整段複製出來。
: 也許有些人會說這可以用 copy-on-write 的技術避免無謂的複製...
: 但實際上沒有啥 string type 是這樣實作的,理由某本書有寫,哪本我忘了。
這點我想要看高階語言對 string type 的操作介面
如果該語言的 string 是 immutable
那同樣也可以節省複製時間
通常使用 pointer+length 的方式來存 string 的話
那取 substring 時還會比 null-terminated 更簡單
lua 的 string 就是 immutable
而它的操作也的確非常快
若 string type 是 mutable
那麼用上述的方式取出 substring 被修改時會影響到原來的 string
導致 substring 一定要複製一份來避免這個情況
(所以我討厭 C++ string! 吼吼)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.32.15.163
→ yoco315:py 也是 immutable 說, 原來是這個原因, 學到了 ^O^ 04/20 11:31
推 Ebergies:印象沒錯的話, 近代的 string 大多都是 immutable 了 04/20 16:33
→ Ebergies:immutable string 隨之而來的會有個東西叫 stringbuilder 04/20 16:34
推 yoco315:喔喔真的也 不講的話我還沒注意到連 go 也是 immutable 04/21 01:06