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比较,这里就浪费了。而作者的代码是没有一点浪费的。