我有一个vector
:
vector<Body*> Bodies;
它包含指向Body
我已定义的对象的指针。
我也有一个unsigned int const
,其中包含body
我希望包含的对象数量bodies
。
unsigned int const NumParticles = 1000;
我已经塞满Bodies
了NumParticles
很多Body
物体。
现在,如果我想遍历一个循环,例如调用中的每个Body
Update()函数Bodies
,那么我可以做两种选择:
第一的:
for (unsigned int i = 0; i < NumParticles; i++)
{
Bodies.at(i)->Update();
}
或第二:
for (unsigned int i = 0; i < Bodies.size(); i++)
{
Bodies.at(i)->Update();
}
每个都有优点和缺点。我想知道在安全性,可读性和惯例方面,哪一种(如果有的话)是更好的做法。
我建议您使用.size()
函数而不是定义新的常量。
为什么?
安全:由于.size()
不会引发任何异常,因此使用绝对安全.size()
。
可读性:恕我直言,Bodies.size()
传达向量的大小Bodies
比清楚NumParticles
。
约定:同样,按照约定,最好使用.size()
它,因为它是向量的属性,而不是变量NumParticles
。
性能:.size()
是一个复杂度恒定的成员函数,因此使用const int
和之间没有显着的性能差异.size()
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句