gpt4 book ai didi

c++ - 关于使用哪种数据结构来快速搜索 C++ 的建议

转载 作者:行者123 更新时间:2023-11-30 04:34:33 30 4
gpt4 key购买 nike

我目前正在思考可能用于当前项目的数据结构。我不需要删除项目,因为我正在加载数据库,使用它,然后退出程序。唯一的限制是搜索时间。(内存在第二次,但主要是时间)。

关于我打算做什么的概述。我正在解析文件并提取用于创建各种对象的信息。读取文件并创建对象后,我有一组多个对象,这些对象将另一个对象作为字符串引用。

这里的目标是找到从一个域到另一个域的网络

例如:文本输入文件:

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;
...
}

我的意见和我想得到建议的事情:

考虑到这一点后,我认为我最好的办法是:

  1. 在读取文件和提取信息时,我应该创建一个模块链表。
  2. 然后根据我已阅读的模块数量,我创建了一个两倍大小的数组。
  3. 对于每个模块,我使用哈希函数对模块名称进行哈希处理,并将指向该模块的指针放在数组中的给定索引处
  4. 现在,当我想要找到一个模块时,我只需要计算散列值并获取给定索引处的指针(如果它不是好的模块,则递增,因为之前在创建数组时发生了冲突)

这基本上是哈希表的实现,或者至少是我从类里面了解到的哈希表。

我的问题是这是个好主意吗?有我可以使用的哈希表库吗?(我听说过并正在寻找 unordered_map 和 map,但我不知道它是否非常适合我的需要)

这是一个巨大的文字,所以我希望它足够详细,如果你有勇气阅读所有内容,谢谢你!

最佳答案

只需使用标准库附带的或来自 boost 的任何哈希表即可.大多数将具有 unordered_map(由 TR1 指定并为 C++0x 提议)和 boost 一样,但有些将具有 std::hash_mapstdext::hash_map 各种实现略有不同,例如原始的 SGI 与 Microsoft。

不需要建列表,直接把对象放到哈希表中即可;它允许顺序迭代,尽管它将以某种固定的随机顺序进行。

关于c++ - 关于使用哪种数据结构来快速搜索 C++ 的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5909265/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com