yhzjut

我的微博:http://weibo.com/u/1864371954

常用链接

统计

最新评论

读wild magic 看到的一个代码小细节

      int iQuantity = (int)m_kInfoArray.size();
for (int i=0; i< iQuantity; i++)
{
const Info& rkInfo = m_kInfoArray[i];
if (rkInfo.User == pkUser&& rkInfo.ID == pkID)
{
if (i < --iQuantity)
{
m_kInfoArray[i] = m_kInfoArray[iQuantity];
}
m_kInfoArray.pop_back();
return;
}
}
在读这段代码的时候 我对作者用 i< --iQuantity不是很理解,这样对代码阅读性不是很高,让我来写肯定是:
if (i < (iQuantity-1))
{
m_kInfoArray[i] = m_kInfoArray[iQuantity-1];
}
m_kInfoArray.pop_back(); 
iQuantity--;
这样的话一不改变iQuantity的值,他就是数组的长度,而且iQuantity-1就是数组最后一个,最后pop时候再iQruantity--,虽然这样代码行数多了,但是比较容易理解。后来发现作者是很注重代码高效性的人,的确游戏引擎的代码就是要尽可能高效。我这句i < (iQuantity-1) 很明显iQuantity-1先生成一个临时变量然后再去和i比较,这里就浪费了。而作者的代码是没有一点浪费的。

posted on 2012-08-27 20:10 blinn 阅读(175) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理