选择合适的数据结构
Selecting Appropriate Data Structure
我们正在阅读一本书,我们必须用它的计数存储这本书的每个字符。
like: "This is to test" out应该是:T4 H1 I2 S3 O1 E1
什么是最合适的数据结构,为什么?这里的逻辑是什么呢?
一个整型数组就可以了。创建一个数组,每个索引是字母表中的一个字母(在扫描图书时,出于某些原因,您可能希望分别存储大写和小写字母)。扫描时,在该字母所在的数组位置增加int值。当你完成后,把它们全部打印出来。
根据您的描述,您只需要一个简单的字符散列来计数。这是因为你只能在一本书中使用有限的一组字符(甚至包括标点、重音和特殊字符)。因此,一个包含几百个条目的散列就足够了。
合适的数据结构应该是std::vector
(或者,如果您想要内置的东西,可以是数组)。如果你使用c++ 0x, std::array
也可以很好地工作。
逻辑非常简单——读取一个字符(显然转换为大写),然后在数组/向量中增加该项的计数。
选择一种数据结构不仅取决于你想在数据结构中存储什么样的数据,更重要的是取决于你想对数据执行什么样的操作。
看一下这个很好的图表,它可以帮助你决定什么时候使用哪个STL容器。
当然,在您的情况下,std::array(C+0x)或std::vector似乎是一个不错的选择。相关文章:
- 链表,反向函数,数据结构
- 如何使用set实现无序数据结构?
- 我们可以将数据永久保存为数据结构吗?
- C++中的可变长度数组/数据结构
- 用于存储由空格分隔的字符串的 C++/C 数据结构
- 通过 NIF 从C++返回自定义数据结构
- 编译器上的策略数据结构不起作用
- 使用选择排序对数组数据结构进行排序,但它不起作用
- 对于这个问题,是否有更好的数据结构和算法选择
- 哪种数据结构和设计用于选择最佳整数集
- 数据结构-选择排序方法
- 使用 QPair 和 QString 选择正确的数据结构
- 用于选择计算机组的数据结构
- 选择合适的数据结构
- 选择一个有效的数据结构来寻找韵律
- 选择合适的FIFO数据结构
- 如何根据c++项目的不同性能要求设计或选择数据结构
- 我应该使用什么数据结构来支持插入、删除和随机选择
- 选择合适的数据结构
- 数据结构/容器选择