C++ STL标准模板库中几种插入迭代器的用法

    C++ STL标准模板库中几种插入迭代器的用法

    STL是一种通用编程技术,STL的目标是抽象和创建可重用代码。C++使用模板使得算法独立于存储的数据结构,而使用迭代器可以使得算法独立于使用的容器类型。STL对每个容器类(vector,list,deque等)定义了相应的迭代器类型,对于其中的类,迭代器可能是指针,对于别的类也可能是对象。

    例如,声明一个double类型vector容器的迭代器

vector<double>::iterator pr;

迭代器的用法

   迭代器的常见用法,应该包括解除引用读取、解除引用写入、固定和可重复排序、++i、i++、i[n]、
i+n、i+=n等,可以从指针操作的角度去理解。比如以下一段简单的查找算法。
   
typedef double * iterator;
iterator find_ar(iterator ar,int n, const double & val)
{
	for (int i=0;i<n;i++,ar++)
	{
		if(*ar == val)
			return ar;
	}
	return 0;
}

与之不同,由于使用了迭代器,可以简化为如下代码

这是所有迭代器所含有的基本功能,解除引用。

迭代器的种类

    迭代器分为输入迭代器,输出迭代器,正向迭代器,双向迭代器和随机访问迭代器。迭代器这么设计的目的是为了满足不同算法和数据类型的需要。输入迭代器是表示来自容器的信息被视为输入,简单理解,输入迭代器可被用来读取容器中的信息,当时不能写,相反,输出迭代器只能解除引用让程序可以修改容器值,而不能读取。正向迭代器只能单方向遍历容器,双向迭代器可以双向遍历,随机访问迭代器要求可以直接访问容器中任何一个元素,可以从数组下标访问数组元素的角度理解。

              总之,在STL中使用copy()不仅可以把信息从一个容器复制到另一个容器,还可以将信息从容器复制到输出流,从输入流复制到容器中,还可以使用copy()将信息插入到另一个容器中。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值