【发布时间】:2018-04-14 21:14:32
【问题描述】:
假设您要从文件中读取并根据其内容创建一个包含多个对象的结构(或数组),例如:
struct {
unsigned id;
char name[16];
float price;
} *items;`
然后您想使用获得的name 来引用一个对象(某些项目),因为这样用户才会知道要查找什么。
但是,使用循环实现搜索会非常慢,尤其是当您每次想要访问一个项目时都必须循环并且您需要一直访问它时。将字符串转换为整数,然后使用查找表(为性能牺牲内存)是一种解决方案,但如果名称长度超过 8 个字节怎么办。
使用名称标识符(结构中的字符串)访问从任意文件填充的已分配结构的最快方法是什么?
【问题讨论】:
-
看看bsearch()的例子。
-
这是一个广泛的问题。你可以从这里开始:en.wikipedia.org/wiki/Associative_array
-
@IharobAlAsimi Ahh 我应该标记 mingw
-
@SmokyPerson 平台无关,链接是标准c。例子也是ANSI c。
-
“什么是最快的方法” 取决于很多因素。这个问题没有通用的答案。但总的来说,如果您唯一的要求是快速查找,请使用基于哈希表的关联数组。如果您也想要快速生成所有记录的排序/有序列表,那么还有更多事情需要考虑
标签: c search optimization mingw