更新 Hm,我有一个更新。显然,我庞大的“无符号长fhash105”数组没有在vC++中自动初始化为零.当我做= {0}时,它起了作用。不是应该自动初始化吗?
我正在做竞赛编程,我通常在学校/ideone用g++编写.但我必须使用VC++ 2010编译器。
尽管如此,我还有代码要做多项式滚动散列(就像Rabin中使用的那样),但是这些溢出在这些编译器上会有不同吗?
代码在这里:http://pastebin.com/UFdpwHCt (散列在第67行附近)
输出在这里:http://i.imgur.com/KCcvI.png
为什么"bhash“在这两个编译器之间是相等的,但是"fhash”不是吗?它们使用相同的方法进行散列..。在G++-3输出中,“f散列”和"bhash“输出是相同的(它们应该是),但是在VC++-10输出中,"fhash”和"bhash“并不相同.
我使用溢出来自然地让它自行修改,以加快执行速度,而不是显式地用一个大素数对其进行修改。
发布于 2012-11-05 23:05:51
不是问题。问题是它没有被初始化为零。用memset修复了它。
https://stackoverflow.com/questions/13186842
复制相似问题