现在的位置: 首页 > 综合 > 正文

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

2013年10月20日 ⁄ 综合 ⁄ 共 816字 ⁄ 字号 评论关闭

    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()将信息插入到另一个容器中。

【上篇】
【下篇】

抱歉!评论已关闭.