答案:
不管你信不信,就在这寥寥几行代码里出现了三处明显的不必要的临时对象,两处不太明显的临时对象,还有一处值得注意的地方。
string FindAddr( list<Employee> l, string name )
^^^^^^^1^^^^^^^^ ^^^^^2^^^^^
1&2.参数应该是const引用类型.上述语句中的传值参数会导致list和string的拷贝操作,这可能是很耗时的。
[准则]尽量使用const&来代替值拷贝传递参数。
for( list<Employee>::iterator i = l.begin();
i != l.end();
i++ )
^3^
3.此处比上两处稍难看出。此处如果用前自增操作代替后自增的将更有效率,因为对象的后自增操作需要对象执行自增操作并返回一个自增前原值的临时对象(译者:重载过前自增和后自增操作符的读者应该都清楚二者的区别)。注意这种情况对于象int这样的C++原始类型也是适用的。
[准则]尽量使用前自增,避免使用后自增。
if( *i == name )
^4
文章来源于领测软件测试网 https://www.ltesting.net/