由Mr.Spolsky閱讀文章"Back to Basics"後,我曾經想過串結構C,會聚大部分帕斯卡爾式的字符串的優勢(長度字節)和經典ASCIIZ- C中的字符串並減少了它們的大部分缺點。主要需求是使這個新字符串在機器命令中有效。 (這個任務我想,每一個字符是單字節對不起:))還有一個字符串實現:優點和缺點
我的想法是存儲字符串(也可以包含零個字節)在這樣的結構的字節數組:
- - 字符串長度呈現的字節長度(值爲1或更大);
- 1..presLength + 1 - 字符串長度表示(1或更多字節;可能有固定長度(即處理更簡單,但確定字符串長度限制);
- presLength + 2..arrrayLength - 字符串內容。
我希望這種方法可以解決斯波斯基先生注意到的大多數問題,但是假設有一些缺陷。我想知道你的意見。你怎麼看待這件事?
Joel實際上沒有寫字符串,你知道。他僅僅將它們用作插圖,因爲任何程序員都會知道它們。但他的主要觀點是你應該避免O(N * N)算法。 – MSalters 2009-11-26 09:27:51
對於你的表示沒有理解一件事,甚至沒有你想要解決的問題。你想解決使strcat()不是O(n * n)算法的問題?有很多方法可以做到這一點。 如果你打算編寫一個真正的程序,我建議使用框架提供的現有字符串結構,如Qt,Gtkmm,WxWindows,MFC,std :: lib。他們都可以解決strcat問題,還有更多,如unicode轉換和其他棘手的功能。 – 2009-11-26 09:34:36
你想解決製造strcat()而不是O(n * n)算法的問題 是的,這是其中一項任務。 如果你打算寫一個真正的程序, 如果我寫一個真正的程序,我肯定不會重新創建一個自動程序。這個任務只是一個純粹的思維遊戲。我認爲C和Pascal中字符串實現的比較是不同方法的一個很好的例子,它具有不同的優點和缺點。有些缺點是由優點產生的。 – 2009-11-26 10:36:22