灵感来自this.假设我们有一个非空的std::vectorv;有什么区别吗for(inti=v.size()-1;i>=0;i--){///Stuff.}和:for(inti=v.size();i--;){///Stuff.}?我的意思是,为了可读性我不会那样做,但谁知道什么对生活有用......(Here只是一个测试,看看它们是等价的)编辑:重点是i作为向后访问vector的索引(在索引比迭代器更可取的情况下)编辑2:出于好奇:他们最终得到了略微不同的汇编代码。参见this和this. 最佳答案 人们可以想到for循环for(;
本着graphics.stanford.edu/~seander/bithacks.html的精神我需要解决以下问题:intx;intpow2;//alwaysapositivepowerof2intsgn;//alwayseither0or1//...//...if(sgn==0)x-=pow2;elsex+=pow2;当然我需要避免条件。到目前为止,我想出的最好的是x-=(1|(~sgn+1))*pow2但这涉及到我也想避免的乘法。提前致谢。编辑:谢谢大家,x-=(pow2^-sgn)+sgn似乎可以解决问题! 最佳答案 我会试
本着graphics.stanford.edu/~seander/bithacks.html的精神我需要解决以下问题:intx;intpow2;//alwaysapositivepowerof2intsgn;//alwayseither0or1//...//...if(sgn==0)x-=pow2;elsex+=pow2;当然我需要避免条件。到目前为止,我想出的最好的是x-=(1|(~sgn+1))*pow2但这涉及到我也想避免的乘法。提前致谢。编辑:谢谢大家,x-=(pow2^-sgn)+sgn似乎可以解决问题! 最佳答案 我会试