具有 O(1) 查找的 C++ 索引容器

c++ indexed container with o(1) lookup

本文关键字:C++ 索引 查找 具有      更新时间:2023-10-16

我将把char存储在某个容器中,然后从字符串中取出char,并从所述容器中的字符串中查找char的索引。 我还需要做相反的事情,获取索引并找出那里的字符。

所以它更像是:

container<char> c;
int index = c.indexOf('a');
char letter = c[12];

我不关心插入或删除操作。

我想最好的解决方案是只使用字符串或字符表。 然后做:

int index = 'a'-myString[0]; //for lookup
char c = myString[index];    //for index

具有双向查找能力的通用数据结构是双向映射。如果使用哈希表实现,则查找应该具有恒定的复杂性。

现在,如果我们可以假设char是 8 位宽的,并且您的索引是连续的,那么我们可以使用更简单的数据结构:只需将字符存储在数组中即可。使用另一个大小1 << CHAR_BIT数组来存储每个字符的索引。