例如,假设我正在循环一个指针向量以检查多个对象并对它们执行操作。我可以执行以下任一操作。
方法一:
std::vector< Object* >::iterator it;
Object* o;
for (it = objects.begin(); it != objects.end(); ++it)
{
o = (*it)
if(o->GetActive())
{
o->method;
o->method2;
o->method3;
//etc...
}
}
方法二:
std::vector< Object* >::iterator it;
for (it = objects.begin(); it != objects.end(); ++it)
{
if((*it)->GetActive())
{
(*it)->method;
(*it)->method2;
(*it)->method3;
//etc...
}
}
从我所见,方法 1 具有更容易的可读性,因为取消引用语法通常会使可读性复杂化,尤其是当您执行以下操作时:
if((*o)->CheckValue((*c)))
但是创建局部变量会更容易阅读:
if(o->CheckValue(c))
但是您正在创建额外的变量,这会增加内存成本,对吗?
性能上的差异是什么?