簡體   English   中英

選擇合適的數據結構

[英]Selecting Appropriate Data Structure

我們正在閱讀一本書,我們必須將這本書的每個字符都存儲起來。

比如:“這是為了測試”出來的應該是:T4 H1 I2 S3 O1 E1

這里最合適的數據結構是什么,為什么? 以及這里的邏輯是什么。

一個整數數組在這里會很好。 創建一個數組,每個索引都是字母表中的一個字母(在掃描書籍時,出於性能原因,您可能希望分別存儲大寫和小寫)。 掃描時,在該字母的數組位置增加 int。 完成后,將它們全部打印出來。

根據您的描述,您只需要一個簡單的 hash 字符即可對其進行計數。 這是因為您只有有限的一組字符可以出現在一本書中(甚至包括標點符號、重音符號和特殊字符)。 因此,具有幾百個條目的 hash 就足夠了。

適當的數據結構將是一個std::vector (或者,如果你想要一些內置的東西,一個數組)。 如果您使用 C++0x, std::array也可以很好地工作。

邏輯非常簡單——讀取一個字符(顯然轉換為大寫),然后增加數組/向量中該項目的計數。

選擇數據結構不僅取決於您希望在數據結構中存儲什么樣的數據,更重要的是取決於您希望對數據執行什么樣的操作。

看看這個優秀的圖表,它有助於決定何時使用哪個 STL 容器。

當然,在您的情況下,std::array(C+0x) 或 std::vector 似乎是一個不錯的選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM