这一章主要讲迭代器概念和Traits编程技法,听这题目前半句还懂一点,而traits完全不知道是什么特性。
迭代器,在我的理解中就是一个用来访问容器的内部指针,以前用也仅是用了它的这个基本特性来遍历容器的所有元素,希望看完这一章能有更深刻的认识。
第一节讲了迭代器设计思维:把算法和容器分开,独立发展(可以写一个算法运用于所有容器,不用为每一种容器都绑定算法,反之增加一个新的容器也不用为该容器增加不同的算法),然而这两者要能关联起来使用,就需要迭代器。
第二节讲了迭代器相当于一种智能指针,最重要的功能就是能内容提取和成员访问,并写了个例子单独写了一个迭代器的类来访问链表,但是由于重载的*和->中必须要了解链表内部的实现细节,因为迭代器作为一个独立于容器之外的类变得不可能,所以迭代器的开发工作只能由容器自己来做。
第三节讲了迭代器相应型别, 主要是指如何根据一个已知的迭代器推出它为之服务的数据类型,即其所指向的数据类型。关于这一点,举了一个例了,通过函数模板的推导机制可以得到某个迭代器所具有的型别。
示例如下:
#include <iostream>
#include <typeinfo>
using namespace std;
template<class T, class V>
void func(T t, V v)
{
// 得到了类型V
V av;
cout<<typeid(av).name()<<endl;
}
template<class T>
void funcImp(T t)
{
func(t, *t);
}
int main()
{
int i;
funcImp(&i);
return 0;
}