【发布时间】:2015-11-27 13:33:41
【问题描述】:
我正在使用向量
我的问题是,我需要重新散列我的向量吗?我的意思是这段代码将始终生成一个介于 0 和 5 之间的键,因为它取决于我的哈希表的大小,当然会导致冲突,但是新字符串将全部添加到向量中每个位置的列表中......所以看来我不需要调整整个事情的大小/重新散列。你怎么看?这是一个错误吗?
【问题讨论】:
-
如果你有一个大小为 5 的向量,则索引 5 超出范围。
-
另外,我建议你通过常量引用传递向量,否则每次调用函数时都会复制。
-
向量一开始是空的,我会在运行时插入字符串。为什么5出界?一切都在计算 %5 否?
-
但是当向量不为空的时候调用函数呢?迟早您将在向量的列表中拥有大量数据,如果您按值传递向量,所有数据都将被复制,从而导致大量开销。至于索引问题,向量类似于数组,索引是从零开始的,这意味着大小为 5 的向量的有效索引是
0到4(包括)。是的,模运算符将为您提供正确的结果,但问题中的文本可以解释为您在索引中包含5。 -
哦,顺便说一句,如果你使用
unsigned int,那么你不需要检查负数,如果达到最大unsigned int值,就让值环绕。
标签: c++ hash hashtable universal