【Exceptional C++(5)】使用标准库
2018-01-26 本文已影响6人
downdemo
- 使用标准库算法比自己徒手编写的算法实现好得多,比如避免出现在上个条款中的各种缺陷
// 修改后的版本,仍然存在对l.end()多余的调用
string FindAddr(const list<Employee>& l,const string& name)
{
string addr;
for (list<Employee>::const_iterator i = l.begin(); i != l.end(); ++i)
{
if ( (*i).name == name)
{
addr = (*i).addr;
break;
}
}
return addr;
}
- 只要简单地用find()就可以避免产生两个临时对象和所有l.end()带来的低效
string FindAddr(const list<Employee>& l, const string name)
{
string addr;
list<Employee>::const_iterator i = find(l.begin(), l.end(), name);
if (*i != l.end())
{
addr = (*i).addr;
}
return addr;
}