假设您想从文件中读取数据并根据其内容创建一个包含多个对象的结构(或数组),例如:
struct {
unsigned id;
char name[16];
float price;
} *items;`
然后您想使用获得的 name
来引用一个对象(某些项目),因为这是用户知道要查找什么的方式。
但是,实现使用循环的搜索会非常慢,尤其是当您每次想要访问某个项目时都必须循环并且您需要一直访问它时。将字符串转换为整数然后使用查找表(为了性能牺牲内存)是一种解决方案,但是如果名称超过 8 个字节怎么办。
使用名称标识符(结构中的字符串)访问从任意文件填充的分配结构的最快方法是什么?
最佳答案
使用 binary search tree因为这是理想的。当然,更高级的结构(如 B 树)可能会提高性能。但了解这一点是您真正需要的全部,二叉搜索树在许多情况下都非常有效,就像您上面描述的那样,它们仍然简单且易于实现。
一个简单的方法是使用bsearch()
来自标准库,但随后插入数据集合变得困难或效率低下。
这些仍然是循环,但它们比线性查找更有效。
关于c - 使用字符串作为数组索引标识符(无循环),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47073738/