高效C++ -4
必须返回对象时,别妄想返回其reference:
这句话什么意思呢?就是在一个函数内,如果你需要这个函数返回一个新的对象,那么这个函数的返回值类型就不要定义成引用类型。就直接返回这个类类型。
首先,我们知道在函数传递参数时,传递引用的好处,尤其是对那么比较大的类型,但是对于内建类型和STL的迭代器类型就没有必要使用引用传递,就可以使用值传递。因为对于内建类型传递引用不值得。...
分类:
编程语言 时间:
2014-12-15 23:40:01
阅读次数:
336
STL源码剖析—算法
在STL中的算法中一些算法是可以根据算法名字来判断算法作用的。所有算法的参数都是迭代器,不过不同的算法调用的迭代器类型也是不同的。多有的STL算法都作用在由迭代器{first,lase)所表示出来的区间上。拷贝(copy)交换(swap)替换(replace)填写(fill)删除(remove)排列组合(permutation)分割(partition)随...
分类:
编程语言 时间:
2014-12-13 19:27:32
阅读次数:
198
自定义迭代器必须提供iterator_traits的五种特性,分别是迭代器类型、元素类型、距离类型、指针类型与reference类型。这里我们继承标准库提供的iterator即可。代码如下: 1 #ifndef ITERATOR_H 2 #define ITERATOR_H 3 #include ....
分类:
其他好文 时间:
2014-10-05 19:36:08
阅读次数:
224
这里的迭代器能够与STL组件共同工作,是对STL的一种扩充。 自定义迭代器必须提供iterator_traits的五种特性,分别是迭代器类型、元素类型、距离类型、指针类型与reference类型。 这里我们继承标准库提供的iterator即可。 代码如下: MyIterator.hpp 该迭代器针对...
分类:
其他好文 时间:
2014-09-29 23:37:51
阅读次数:
188
源码之前,了无秘密 ——侯杰第四章:序列式容器 C++语言本身提供了一个序列式容器array array:分配静态空间,一旦配置了就不能改变。 vector: 分配动态空间。维护一个连续线性空间,迭代器类型为:Random Access Iterato...
分类:
其他好文 时间:
2014-09-03 11:08:36
阅读次数:
231
引言
C++ 语言提供了两种类似于vector 和迭代器类型的低级复合类型——数组和指针。与vector 类型相似,数组也可以保存某种类型的一组对象;而它们的区别在于,数组的长度是固定的。数组一经创建,就不允许添加新的元素。指针则可以像迭代器一样用于遍历和检查数组中的元素。
现代 C++ 程序应尽量使用vector 和迭代器类型,而避免使用低级的数组和指针。设计良好的程序只有在强调...
分类:
编程语言 时间:
2014-08-26 13:48:36
阅读次数:
255
1 头文件 所有容器有含有其各自的迭代器型别(iterator
types),所以当你使用一般的容器迭代器时,并不需要含入专门的头文件。不过有几种特别的迭代器,例如逆向迭代器,被定义于中。 2 迭代器类型
迭代器共分为五种,分别为: Input iterator、Output iterator、Fo...
分类:
其他好文 时间:
2014-05-31 06:45:24
阅读次数:
277
STL实践与分析--泛型算法的结构引言:
正如全部的容器都建立在一致的设计模式上一样,算法也具有共同的设计基础。
算法最主要的性质是须要使用的迭代器种类。全部算法都指定了它的每一个迭代器形參可使用的迭代器类型。比方,假设形參必须为随机訪问迭代器则可提供vector或
deque类型的迭代器,或者.....
分类:
编程语言 时间:
2014-05-09 23:10:44
阅读次数:
510
STL实践与分析--泛型算法的结构引言: 正如所有的容器都建立在一致的设计模式上一样,算法也具有共同的设计基础。 算法最基本的性质是需要使用的迭代器种类。所有算法都指定了它的每个迭代器形参可使用的迭代器类型。比如,如果形参必须为随机访问迭代器则可提供vector或 deque类型的迭代器,或者提供指向数组的指针。而其他容器的迭代器不能用在这类算法上。 C++还提供了另外两种算法模式...
分类:
编程语言 时间:
2014-04-27 21:36:05
阅读次数:
392