Effective STL: 尽量使用区间成员函数代替它们的单元素兄弟
来源:互联网 发布:centos镜像配置yum源 编辑:程序博客网 时间:2024/05/21 09:37
尽量使用区间成员函数代替它们的单元素兄弟的理由
- 一般来说使用区间成员函数可以输入更少的代码。
- 区间成员函数会导致代码更清晰更直接了当。
- 当处理标准序列容器时,应用单元素成员函数比完成同样目的的区间成员函数需要更多地内存分配,更频繁地拷贝对象,而且/或者造成多余操作。
// 把一个int数组拷贝到vector前端int data[numValues]; // 假设numValues在其他地方定义vector<int> v;...// 区间成员函数版本v.insert(v.begin(), data, data + numValues); // 把data中的int插入v前部// 单元素循环版本vector<int>::iterator insertLoc(v.begin());for (int i = 0; i < numValues; ++i){ insertLoc = v.insert(insertLoc, data[i]); ++insertLoc;}
单元素循环版本缺点(此处针对vector)
- 更多的函数调用(每次循环都有一次insert调用)
- 更多次的插入位置后的元素移动(每次循环都要移动后面的元素各一次)
- 可能导致多次内存重新分配(每次分配后会涉及到对象的拷贝,构造,析构等)
- 要小心翼翼地维护insertLoc的值,用于下次循环
支持区间的成员函数总结:
- 区间构造。所有标准容器都提供这种形式的构造函数:
container::container(InputIterator begin, // 区间的起点 InputIterator end); // 区间的终点
区间插入。
- 所有标准序列容器都提供这种形式的insert:
void container::insert(iterator position, // 区间插入的位置 InputIterator begin, // 插入区间的起点 InputIterator end); // 插入区间的终点
- 关联容器使用它们的比较函数来决定元素要放在哪里,所以它们了省略position参数。
void container::insert(lnputIterator begin, InputIterator end);
区间删除。
每个标准容器都提供了一个区间形式的erase,但是序列和关联容器的返回类型不同。序列容器提供了这个:
iterator container::erase(iterator begin, iterator end);
关联容器提供这个:
void container::erase(iterator begin, iterator end);
- 区间赋值。所有标准列容器都提供了区间形式的assign:
void container::assign(InputIterator begin, InputIterator end);
0 0
- Effective STL: 尽量使用区间成员函数代替它们的单元素兄弟
- Effective STL: 尽量使用区间成员函数代替它们的单元素兄弟
- 条款5:尽量使用区间成员函数代替它们的单元素兄弟
- 尽量使用区间成员函数代替它们的单元素兄弟
- 尽量使用区间成员函数代替它们的单元素兄弟
- Effective STL-尽量使用区间操作代替单元素操作
- STL高效编程( 五)-尽量使用区间操作函数来代替单元素操作函数。
- 复习 Effective STL 第五条 区间成员函数优先于与之对应的单元素成员
- 《Effective STL》读书笔记三:Item 5(区间成员函数优先于与之对应的单元素成员函数)
- Effective STL 第5条:区间成员函数优先于与之对应的单元素成员函数
- STL区间成员函数优先于与之对应的单元素成员函数
- Effective STL 05 区间成员函数
- effective STL - 尽量使用vector和string来代替动态分配的数组(char *)
- Effective STL 13 尽量使用vector和string来代替动态分配的数组
- 尽量用成员函数代替同名的算法
- 区间成员函数优先于与之对应的单元素成员函数
- 区间成员函数优先于与之对应的单元素成员函数
- 条款5:区间成员函数优先于与之对应的单元素成员函数
- 平衡二叉树(AVL树)算法 Java实现
- E. Bindian Signalizing (拆环成链)(好题)
- JNI高级教程之数据类型转换
- C for ios --- 位运算
- windows下git http协议保存用户名密码
- Effective STL: 尽量使用区间成员函数代替它们的单元素兄弟
- C for ios --- char 类型
- main中静态方法,静态块,构造方法执行顺序
- Windows批处理
- ClientDataSet 的 Aggregate 字段,可以用来做分组统计
- C for ios --- 类型说明符
- 远程登录家里的无线路由器
- Android APP安全测试入门
- 手机触摸滚动导航