迭代器适配器

迭代器适配器

      迭代器适配器是一个类模板,为标准的迭代器提供了一些特殊的行为,适配器类模板定义了3中不同的迭代器,反向迭代器、插入迭代器、移动迭代器

1.反向迭代器

       可以创建双向或随机迭代器版本的反向迭代器。可以通过容器的rbegin()和rend()返回指向最后一个元素的反向迭代器以及一个指向最开始元素前一个位置的反向迭代器。或使用同名称的全局函数获得。

       反向迭代器的base()函数可以返回一个标准的迭代器,总是指向反向迭代器指向的下一个位置

2.插入迭代器

       插入迭代器通常用于在容器的任何位置添加新的元素。不能应用到标准数组和array容器,因为它们的元素个数固定。

       有3中插入迭代器:                                                                     

  •  后向插入迭代器(back_insert_iterator)通过调用成员函数push_back()将新元素添加到容器的尾部。vector、list、deque容器都有push_back()函数。如果容器没有定义push_back()函数,则后向插入迭代器无法使用。以容器作为全局函数back_inserter的参数传入可以得到一个后向插入迭代器对象。
  • 前向插入迭代器(front_insert_iterator)通过调用成员函数push_front()将新元素添加到容器的头部。list、forward_list、deque容器都有push_front()函数。如果容器没有定义push_front()函数,则前向插入迭代器无法使用。以容器作为全局函数front_inserter的参数传入可以得到一个前向插入迭代器对象。
  • 插入迭代器(insert_iterator)可以向任何有insert函数的容器中插入一个新的元素。string类也可以使用。以容器作为全局函数inserter()的第一个参数可以得到一个插入迭代器对象,第二个参数是一个指向容器插入位置的迭代器。

    插入迭代器一般被用作拷贝或生成一段元素的算法的参数。

3.移动迭代器

    可以用移动迭代器将某个范围的类对象移动到目标范围,而不需要拷贝移动。

 

你可能感兴趣的:(c++)