具有 O(1) 查找的 C++ 索引容器
c++ indexed container with o(1) lookup
我将把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
数组来存储每个字符的索引。
相关文章:
- 数组索引的值没有增加
- 芬威克树(BIT).找到具有给定累积频率的最小索引,单位为 O(logN)
- 查找最接近的大于当前数字的数字的索引
- 在C++中调整向量中的索引
- 重载元组索引运算符-C++
- 给定一个向量,如何找到该向量的所有子集和的原始索引
- 为std::string的某个索引赋值
- 并行用于C++17中数组索引范围内的循环
- 跟随整数索引列表的自定义类迭代器
- 如何在for循环中包含两个索引值的测试条件
- D3D11-将混合权重和索引传递到顶点着色器
- 将转换字符键入 int 以用作向量C++的索引
- 在 C++ 中访问数组负索引处的内存不会返回垃圾
- 如何为圆环创建索引
- 在子集化后将包含索引号的列表列表映射到标准索引序列
- 查找字符在两个索引之间出现的次数
- Azure Kinect 使用正文索引映射裁剪正文
- 如何查找哪个类对象位于数组的特定索引上(多态性)
- 数组索引重载错误
- 如何在 std::vector 中找到<bool>哪些索引是真的?