c++ - 如何在 C++ 中使用多个搜索值查找项目?

标签 c++

概念上我的数据代表一个像这样的表

+-------+------+------+------+------+  
|  ID   | Val1 | Val2 | Val3 | Val4 |  
+-------+------+------+------+------+  
| Name1 | a    | b    | c    | d    |  
| Name2 | a    | b    | c    | e    |  
| Name3 | h    | b    | c    | d    |  
| Name4 | i    | j    | k    | l    |  
+-------+------+------+------+------+  

目前我可以自由选择数据的存储方式。本质上,我的 ID 具有一些值,这些值已分配给 ID。一组值对于 ID 是唯一的(不会为另一个 ID 重复任何组)。单个值可以跨 ID 重复。

现在,我需要在 C++ 中做的是使用一组值来查找名称。所以本质上是这样的:

std::string findID(char val1, char val2, char val3, char val4)
{
    //Do something to find the corresponding Name

    return result;
}

我目前对如何去做这件事有点困惑。我考虑过使用带有元组的映射,但为元组提供散列函数似乎使问题过于复杂。所以基本上就像这里描述的那样:Using tuple in unordered_map

有没有我似乎忽略的更简单的解决方案?

最佳答案

如果所有的值都是字符,我认为你最好将你的表的每一行都转换成字符串,并为情侣ID/stringID提供一个哈希表。当您获得 5 个值作为 char 来测试时,您只需连接它们并运行搜索。

关于c++ - 如何在 C++ 中使用多个搜索值查找项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48425621/

相关文章:

c++ - 如果我公开 const 和非 const API,我是否会破坏 const 正确性?

c++ - 为什么一元运算符 & 不需要完整的类型?

c++ - 如何摆脱 "BSCMAKE : error BK1500: Internal error"编译错误

c++ - c++代码中的意外输出,未获得预期结果

c++ - BMP 阅读器无法正常工作

c++ - is_enum 实现

java - super 强大的 SDK Android

c++ - 程序意外终止 C++

c++ - 缓冲区欠载逻辑问题,线程教程?

c++ - 一个简单的cuda编译出错