区间成员函数优先于与之对应的单元素成员函数
来源:互联网 发布:Logging python 编辑:程序博客网 时间:2024/04/30 08:58
优先选择区间成员函数而不是其对应的单元素成员函数有三条充分的理由:
(1)区间成员函数写起来更容易;
(2)更能清楚地表达你的意图;
(3)表现出了更高的效率。
这里重点讨论效率问题:
比较向量里面insert函数的三个重载:
iterator insert( iterator _Where, const Type& _Val);//只在指定位置插入一个值void insert( iterator _Where, size_type _Count, const Type& _Val);//在指定位置插入相同的_Count个值template<class InputIterator> void insert( iterator _Where, InputIterator _First, InputIterator _Last );//在指定位置插入区间内的值
如果我们用while循环将指定区间内的N个对象用
第一个函数插入向量中,则_Where后面的数将向后移动N次,每次移一位。
但是如果我们用第三个函数则只要将_Where后面的数将向后一次性移动N位。
这还只是我们假定向量已经分配的内存空间足够我们插入N个对象的情况。
让我们来考虑得更深入一些:
假定我们的N为1000,而向量,只是初始化为零:vector<int> v;
当你试图去把一个元素插入内存已经满了的vector时,这个vector会分配具有更多容量的新内存,
从旧内存把它的元素拷贝到新内存,销毁旧内存里的元素,回收旧内存。
然后它添加插入的元素。大部分vector实现都使它们的容量翻倍,
所以插入numValues个新元素会导致最多log2numValues次新内存的分配。
所以每次一个地插入1000个元素会导致10次新的分配(包括它们负责的元素拷贝)。
与之对比的是(而且,就目前来看,是可预测的),
一个区间插入可以在开始插入东西前计算出需要多少新内存(假设给的是前向迭代器),
所以它不用多于一次地重新分配vector的内在内存。这个节省相当可观。
- 区间成员函数优先于与之对应的单元素成员函数
- 区间成员函数优先于与之对应的单元素成员函数
- STL区间成员函数优先于与之对应的单元素成员函数
- 条款5:区间成员函数优先于与之对应的单元素成员函数
- 复习 Effective STL 第五条 区间成员函数优先于与之对应的单元素成员
- 《Effective STL》读书笔记三:Item 5(区间成员函数优先于与之对应的单元素成员函数)
- Effective STL 第5条:区间成员函数优先于与之对应的单元素成员函数
- 条款5:尽量使用区间成员函数代替它们的单元素兄弟
- 尽量使用区间成员函数代替它们的单元素兄弟
- Effective STL: 尽量使用区间成员函数代替它们的单元素兄弟
- 尽量使用区间成员函数代替它们的单元素兄弟
- Effective STL: 尽量使用区间成员函数代替它们的单元素兄弟
- effective stl 第44条:容器的成员函数优先于同名的算法
- 带成员函数指针的成员函数
- 类成员函数指针区别于用法
- Effective STL 05 区间成员函数
- 类的成员函数
- 成员函数的指针
- js动态给一个DIV插入一个表格
- 不写独立于容器类型的代码
- 关于获得MFC窗口其它类指针的方法
- 用empty检查是否为空
- 利用 UltraEdit 重新排版 XML 结构数据
- 区间成员函数优先于与之对应的单元素成员函数
- 当心C++编译器的分析机制
- AS常用代码集锦
- 用C#开发较完整的Windows任务管理器
- 慎重选择删除元素的方法
- 学ACE以及网络编程的参考读物
- [记录]调戏皮条客的短信实录
- MSSQL数据导入导出语句一览
- C#读写INI文件