一个数组a[10]需要做一些计算,比如,a[2]- a[1],a[8]- a[4].还有其他的一种数组元素做差的计算,现在的问题是我发现程序中数组元素做差的就是那么几个,比如我前面写的那两个。所以实际情况是这些做差的大部分时间是重复的,因此我想用一个map,把这些做差的元素序号以及做差的值存储起来,然后每次在做差之前先查找map如果找到就不用做差了。可是这样是不是效率反而低了?还不如直接两个数组元素做差来的快。
求解答,谢谢啦。我是觉得在这种情况下,是不是用了map反而会降低效率。
得看具体问题啊,使用STL吧
直接相减就好了,这样使用map绝对是浪费。
做差运算一条CPU指令就完成了,转成map,又是存储、又是查找,这是多少CPU指令才能完成的事情?!
除非a[10]是复杂的对象,减号运算符中有大量复杂的运算。
弄个静态局部变量保存运算的结果, 如果参与运算的两项有任何一项发生改变, 则更新静态变量的值. 这样可以尽量避免操作map. 节省CPU.