《Effective STL》读书笔记三:Item 5(区间成员函数优先于与之对应的单元素成员函数)

来源:互联网 发布:python win32教程 编辑:程序博客网 时间:2024/05/16 02:15
Item 5:区间成员函数优先于与之对应的单元素成员函数
Prefer range member functions to their single-element counterparts
  • 将vector v1的内容替换为vector v2的后半部分时,最好使用:v1.assign(v2.begin() + v2.size() /2, v2.end())
若不使用区间成员函数,则需要写一个像这样的循环:
vector<Widget> v1, v2; 
v1.clear();
for ( vector<Widget>::const_iterator ci = v2.begin() + v2.size() / 2;
       ci != v2.end(); ++ci)
    v1.push_back(*ci);
或者使用copy:
copy(v2.begin() + v2.size() / 2, v2.end(), back_inserter(v1 ));
  • 在使用copy时,当目的范围使用的是insert iterator时,应该改用区间成员函数实现,因为区间成员函数的代码更简洁更清晰
  • 使用顺序容器的区间成员函数时,性能上有三点好处:避免不必要的函数调用;避免不必要的数据移动(list时是指针赋值);更好地重新分配内存。
  • 使用关联容器的区间成员函数时,性能优势不那么明显,但是肯定没有性能损失。
  • 支持使用区间的成员函数:insert, erase, assign
原创粉丝点击