【发布时间】:2011-08-20 00:54:19
【问题描述】:
我目前正在考虑可能用于当前项目的数据结构。我不需要删除项目,因为我正在加载数据库,使用它,然后退出程序。唯一的限制与搜索时间有关。(第二次记忆,但主要是时间)。
概述我打算做什么。 我正在解析文件并提取用于创建各种对象的信息。 读取文件并创建对象后,我有一组多个对象,这些对象以字符串形式引用其他对象。
这里的目标是找出从一个域到另一个域的网络
例如:文本输入文件:
module Blabla
netTomodule Foo
domain 1
..../*Other parameters of the module*/
end module
module Foo
netTomodule Blabla
netTomodule Foo2
domain 2
..../*Other parameters of the module*/
end module
module Foo2
netTomodule Foo
domain 2
..../*Other parameters of the module*/
end module
阅读本文后,我得到 3 个模块对象 Foo Foo2 和 Blabla,它们的属性如下:
class Module{
private :
string name;
int domain;
netlist * mynetlist;
...
}
我的意见和我想得到建议的事情:
考虑到这一点,我认为我最好的办法是:
- 在读取文件和提取信息时,我应该创建一个模块的链表。
- 然后根据我已读取的模块数量,我创建一个大小是其两倍的数组。
- 对于每个模块,我使用哈希函数对模块名称进行哈希处理,并将指向该模块的指针放在数组中的给定索引处
- 现在,当我想找到一个模块时,我只需要计算哈希值并获取给定索引处的指针(或者如果它不是好的模块,因为之前在制作数组时发生冲突,则增加)
这基本上是一个哈希表的实现,或者至少是我从我的班级中知道的一个哈希表。
我的问题是 这是个好主意吗?有没有我可以使用的哈希表库?(我听说过并寻找 unordered_map 和 map,但我不知道它是否非常适合我的需求)
这是一个巨大的文本,所以我希望它足够详细,所以如果你有勇气阅读所有内容,谢谢!
【问题讨论】:
-
你的问题很难理解,因为里面有很多不相关的信息和重复。尝试专注于基本内容,避免使用空洞的短语(“你应该知道的是……”)。
-
如果不知道要对模块执行什么操作,就很难回答。您要解决的总体问题是什么?
-
我进行了编辑以更清楚地表明这里的目标是找到从一个域到另一个域的网络(即有一个网络 netween Foo 和 Blabla 从 2 到 1 跨域)跨度>
标签: c++ data-structures