【发布时间】:2014-05-27 11:18:57
【问题描述】:
我有一个数据,我需要对其进行搜索和排序。数据只是一堆结构对象,看起来像这样:
struct ContactInfo {
std::string name;
std::string description;
std::string phoneNumber;
std::string email;
ContactInfo(std::string name, std::string phone, std::string email, std::string desc);
ContactInfo();
};
如果我将它保存在以“名称”为键的地图中,如果我通过“描述”、“电话号码”或“电子邮件”进行搜索,我将不得不执行线性搜索。
我的问题是:我有没有更好的方法来保存数据以加快搜索速度?
【问题讨论】:
-
'我将不得不执行线性搜索......'您可以添加额外的索引映射,使用指向原始
ContactInfo实例的共享指针,以及您需要的各种搜索键需要。 -
你可以使用 boost 多索引:boost.org/doc/libs/1_55_0b1/libs/multi_index/doc/index.html
-
@DieterLücking 这是为了上课,除了
stl,我什么都不用。我猜 πάντα ῥεῖ 的解决方案是我唯一的选择 -
你能根据颜色和大小对汽车进行分类吗?不是真的,如果你按颜色排序,那么你的尺寸就乱了,如果你按尺寸排序,那么你的颜色就会混淆。所以你的选择很明显:见评论 1。
-
您应该使用更多空间来加快搜索速度。