带有o(1)查找的c ++索引容器

时间:2017-08-14 09:51:45

标签: c++ indexing find dataset containers

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

所以更像是:

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

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

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

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

1 个答案:

答案 0 :(得分:0)

能够在两个方向上查找的通用数据结构是双向映射。如果使用哈希表实现,它应该具有查找的恒定复杂性。

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