迭代器iterators及traits详解-stl源码剖析学习笔记

迭代器是一种设计模式,它提供了一种按序访问聚合物(容器)元素的方式,而不暴露其内部结构。在C++中,迭代器常用于STL,与容器和算法分离设计,以促进代码复用。迭代器的行为类似于指针,通过重载`operator*`和`operator->`实现内容访问。为了支持不同类型的容器,迭代器需要定义特定的类型,如value_type、difference_type、pointer、reference和iterator_category。traits技术用于获取迭代器的相关类型信息,如通过模板推导和偏特化处理原生指针的情况。迭代器的规范设计和traits编程是C++中实现高效泛型代码的关键部分。

迭代器

迭代器是一个抽象的设计概念,现实程序语言中并没有直接对应这个概念的实物。《Design Patterns》提供的23个设计模式中,迭代器模式定义为:提供一种方法,使之能够依序寻访某个聚合物(容器)所含的各个元素,而又无需暴露该聚合物的内部表达方式。

不论是泛型思维还是STL的实际应用,迭代器都扮演着重要角色。STL的中心思想在于,将数据容器(containers)和算法(algorithms)分开,彼此独立设计,最终再以胶着剂方式将它们撮合在一起。

以算法find()为例,他接受两个迭代器和一个搜寻目标: 在这里插入图片描述
List和vector容器的find应用:

#include<vector> //vector容器
#include<list> //list容器
#include<iostream> //输入输出流
using namespace std;

void main()
{
   
   
	const int arraySize = 6;
	int ia[arraySize] = {
   
   0,1,2,3,4,5};

	vector<int> ivec(ia, ia+arraySize);
	list<int
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值