标签:指定 标准 输出 insert 改变 nbsp back int vector
除了每个容器有自己的迭代器之外,标准库在头文件iterator中还定义了额外几种迭代器
这些迭代器包括:
插入迭代器(insert iterator):这些迭代器被绑定到一个容器上,可用来向容器插入元素
流迭代器(stream iterator):这些迭代器被绑定到输入或输出流上,可用来遍历所有关联的IO流
反向迭代器(reverse iterator):这些迭代器向后而不是向前移动。除了forward_list容器之外的标准库容器都有反向迭代器
移动迭代器(move iterator):这些专门的迭代器不是拷贝其中的元素,而是移动它们
一、插入迭代器
插入迭代器是一种迭代器适配器,它接受一个容器,生成一个迭代器,能实现向给定容器添加元素。当我们通过一个插入迭代器进行赋值时,该迭代器调用容器操作来向给定容器的指定位置插入一个元素
根据元素插入的位置不同,插入迭代器可分为:
back_inserter:创建一个使用push_back的迭代器
front_inserter:创建一个使用push_back的迭代器
inserter:创建一个使用insert的迭代器。此函数接受第二个参数,这个参数必须是一个指向给定容器的迭代器。元素将被插入到给定迭代器所表示的元素之前
一个重要的注意事项:这三个迭代器返回一个位置,可以对这些位置进行操作,但是进行解引用(*)无效,++也不会改变位置
back_inserter
该参数接受一个容器,返回一个与该容器绑定的插入迭代器,对此迭代器赋值,赋值运算符会调用push_back将元素添加到容器的尾部
例如下面我们在vector容器的尾部插入一个元素:
std::vector<int> vec; vec.push_back(1); vec.push_back(2); auto it = std::back_inserter(vec); it = 3; for (auto val : vec) { std::cout << val << " "; }
我们也可以在算法中运用此迭代器,下面是对fill_n()算法的使用:
参数:参数1为迭代器起始位置。参数2为要改变的元素个数。参数3为要设定的值
fill_n()参数2的注意事项:参数2不能超出容器的大小,也不能对空容器操作
标签:指定 标准 输出 insert 改变 nbsp back int vector
原文地址:https://www.cnblogs.com/nddtt/p/12990278.html