STL源码剖析之第三章读后笔记(一)

这一章主要讲迭代器概念和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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值