c++ - 给定 200 个字符串,什么是键控关系值 LUT 的好方法

标签 c++ lookup-tables unique-key

我有 200 个字符串。每个字符串与其他所有字符串都有关系(由 0 和 1 之间的 float 衡量)。这种关系是双向的;也就是说,关系 A/B == 关系 B/A。这会产生 n(n-1)/2 个关系,即 19,800。

我想做的是将这些关系存储在一个查找表中,以便给定任意两个词我可以快速找到关系值。

我使用的是 C++,所以我可能会使用 std::map 来存储 LUT。问题是,用于此目的的最佳 key 是什么。

key 需要是唯一的,并且需要能够从两个词中快速计算出来。

我的方法是为每个单词对创建一个唯一标识符。例如,给定单词“apple”和“orange”,然后我将它们组合在一起作为“appleorange”(按字母顺序,最小的在前)并将其用作键值。

这是一个好的解决方案还是有人可以提出更聪明的建议? :)

最佳答案

基本上,您是在描述一个具有两个参数的函数,并添加了参数顺序不重要的属性。

如果您在更改顺序时单词之间没有歧义,您的方法就会奏效(我建议在两个单词之间放置一个逗号或类似符号以消除可能的歧义)。任何二维数组也可以。

在尝试查找关系值之前,我可能会将每个关键字转换为某个唯一标识符(使用简单的映射),但它与您的提议没有太大变化。

关于c++ - 给定 200 个字符串,什么是键控关系值 LUT 的好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4711450/

相关文章:

c++ - gcc:在同一指令上使用相同变量时引用参数更改

c++ - 段错误 : randomly removing elements from 2d vector

c++ - 如何将 Windows SDK 添加到 Eclipse C 工具?

java - Java 中的查找表?

mysql - MySQL中键、主键、唯一键和索引的区别

c++ - 主动调用析构函数

c++ - 在平台之间移植 CRC 查找表?

sql-server - 数据仓库模型和查找表

azure-cosmosdb - CosmosDB 独特关键问题

mysql - 插入时重复记录