C++ 使用通配符字符串作为键的高效ID查找

C++ 使用通配符字符串作为键的高效ID查找,c++,algorithm,performance,data-structures,C++,Algorithm,Performance,Data Structures,我需要有效地将一个输入字符串与一大组先前插入的字符串进行匹配,所有这些字符串的长度均为N 这个问题通常可以用基数树来解决(例如),但我有一些特殊的特性,我相信这些特性使这个问题与我目前看到的不同: 输入和存储的字符串都可以包含通配符。(存储或输入的字符串不能只包含通配符)。例如,a\u c将匹配\u bc,但不匹配\u b 集合发生更改,因此插入/删除条目必须很容易 字符串不是任意的;字符串中每个位置允许的字符都不同。例如,第一个字符可能只在[a-c]中,而第二个字符可能在[a-z]中。这是预

我需要有效地将一个输入字符串与一大组先前插入的字符串进行匹配,所有这些字符串的长度均为N

这个问题通常可以用基数树来解决(例如),但我有一些特殊的特性,我相信这些特性使这个问题与我目前看到的不同:

  • 输入和存储的字符串都可以包含通配符
    (存储或输入的字符串不能只包含通配符)。例如,
    a\u c
    将匹配
    \u bc
    ,但不匹配
    \u b
  • 集合发生更改,因此插入/删除条目必须很容易
  • 字符串不是任意的;字符串中每个位置允许的字符都不同。例如,第一个字符可能只在
    [a-c]
    中,而第二个字符可能在
    [a-z]
    中。这是预先知道的,永远不会改变
  • 我不需要实际获取字符串匹配项。相反,我需要匹配字符串的ID。我提到这一点是为了防止有一种有效的方法来存储图形而不表示所有插入的字符串
我目前的解决方案是存储一组三维向量,其中第一个维度对应于字符串中字符的位置,另一个维度对应其值(包括通配符);第三个维度包含与该特定位置/值匹配的所有ID。为了找到匹配集,我计算了所有ID的
set\u交集
,这些ID是通过使用输入字符串查找该矩阵得到的(类似于)

然而,这个解决方案仍然不够快(这是我目前的瓶颈),我想知道是否有更好的方法