为什么这会给出运行时浮点错误?

谢尔曼扎赫

我正在为学校引入哈希表的作业,因此我正在为使用该std::hash函数的哈希表创建模板化的类我遇到的问题出现在我的insert函数中,如下所示:

template <class K, class V>
void HashMap<K, V>::insert(K key, V value)
{
    std::hash<std::string> stringHash;
    int intKey = stringHash(key);
    int bucket = intKey % this->size();
    map[bucket].push_back(std::pair<K, V>(key, value));
}

我的错误发生在以下行:int bucket = intKey % this->size();

我不太明白为什么这会产生浮点错误,因为我的工作完全是整数。使用键“ banana”和值3,散列的int为2068534322。在this->size为5的情况下,模的取值为2。

那么,为什么我会出现浮点错误呢?

编辑1:我也尝试this->size()用硬编码5(这是this->size应该评估为)代替,所以this->size用0评估没有问题。

一切都在流动

您执行模(==除法)运算,因此需要确保分母不为零

template <class K, class V>
void HashMap<K, V>::insert(K key, V value)
{
    std::hash<std::string> stringHash;
    int intKey = stringHash(key);
    int bucket = this->size() ? intKey % this->size() : intKey; 
       // or whatever makes sense to assign for the latter condition
    map[bucket].push_back(std::pair<K, V>(key, value));
}

或者至少assert在执行此操作时放置一条语句以跟踪错误的呼叫来源:

std::assert(this->size());
int bucket = intKey % this->size(); 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么这会给出运行时浮点错误?

来自分类Dev

performSegueWithIdentifier给出运行时错误,为什么?

来自分类Dev

为什么我的代码给出运行时错误?

来自分类Dev

为什么此代码编译并在执行时给出运行时错误

来自分类Dev

为什么以下条件运算符“?:”会编译却给出运行时错误

来自分类Dev

cout给出运行时错误

来自分类Dev

在枚举上重载<<运算符会给出运行时错误

来自分类Dev

为什么这会显示运行时错误?

来自分类Dev

va_arg给出运行时错误

来自分类Dev

flask sqlalchemy filter_by给出运行时错误

来自分类Dev

在android中给出运行时短信权限错误

来自分类Dev

在线判断给出运行时错误(NZEC)

来自分类Dev

尝试使用Swift模拟C联合会给出运行时异常

来自分类Dev

当我尝试从HashSet中删除不存在的元素时,为什么它没有给出运行时错误?

来自分类Dev

当我尝试从不存在的HashSet中删除元素时,为什么它没有给出运行时错误?

来自分类Dev

为什么以下golang程序会抛出运行时内存不足错误?

来自分类Dev

为什么从未执行过的Swift 3代码会抛出运行时错误?

来自分类Dev

为什么VB6 FlexGrid抛出运行时错误381'下标超出范围'?

来自分类Dev

为什么从未执行过的Swift 3代码会抛出运行时错误?

来自分类Dev

在SSMS中正常运行时,为什么在c#中调用存储过程会给出InvalidOperationException?

来自分类Dev

设置iDoc = IE.Document在VBA中给出运行时错误

来自分类Dev

VBA UserForm为其参数之一给出运行时错误91

来自分类Dev

为什么这会给出未经检查的强制转换警告?

来自分类Dev

为什么在lua中运行'setfallback'会给出错误

来自分类Dev

为什么ClassCastException是运行时错误?

来自分类Dev

为什么此代码在 URI Online Judge 中给出“运行时错误”

来自分类Dev

以下代码在 ideone 中给出运行时错误,但在 eclipse 和 bash 终端中运行良好

来自分类Dev

每次项目运行时django都会给出重复的错误

来自分类Dev

泽西岛给出运行时错误java.lang.NoClassDefFoundError:org / glassfish / jersey / server / ResourceConfig

Related 相关文章

  1. 1

    为什么这会给出运行时浮点错误?

  2. 2

    performSegueWithIdentifier给出运行时错误,为什么?

  3. 3

    为什么我的代码给出运行时错误?

  4. 4

    为什么此代码编译并在执行时给出运行时错误

  5. 5

    为什么以下条件运算符“?:”会编译却给出运行时错误

  6. 6

    cout给出运行时错误

  7. 7

    在枚举上重载<<运算符会给出运行时错误

  8. 8

    为什么这会显示运行时错误?

  9. 9

    va_arg给出运行时错误

  10. 10

    flask sqlalchemy filter_by给出运行时错误

  11. 11

    在android中给出运行时短信权限错误

  12. 12

    在线判断给出运行时错误(NZEC)

  13. 13

    尝试使用Swift模拟C联合会给出运行时异常

  14. 14

    当我尝试从HashSet中删除不存在的元素时,为什么它没有给出运行时错误?

  15. 15

    当我尝试从不存在的HashSet中删除元素时,为什么它没有给出运行时错误?

  16. 16

    为什么以下golang程序会抛出运行时内存不足错误?

  17. 17

    为什么从未执行过的Swift 3代码会抛出运行时错误?

  18. 18

    为什么VB6 FlexGrid抛出运行时错误381'下标超出范围'?

  19. 19

    为什么从未执行过的Swift 3代码会抛出运行时错误?

  20. 20

    在SSMS中正常运行时,为什么在c#中调用存储过程会给出InvalidOperationException?

  21. 21

    设置iDoc = IE.Document在VBA中给出运行时错误

  22. 22

    VBA UserForm为其参数之一给出运行时错误91

  23. 23

    为什么这会给出未经检查的强制转换警告?

  24. 24

    为什么在lua中运行'setfallback'会给出错误

  25. 25

    为什么ClassCastException是运行时错误?

  26. 26

    为什么此代码在 URI Online Judge 中给出“运行时错误”

  27. 27

    以下代码在 ideone 中给出运行时错误,但在 eclipse 和 bash 终端中运行良好

  28. 28

    每次项目运行时django都会给出重复的错误

  29. 29

    泽西岛给出运行时错误java.lang.NoClassDefFoundError:org / glassfish / jersey / server / ResourceConfig

热门标签

归档