• C++ 插入迭代器insert iterator


    1.C++中的迭代器一般是不会改变容器的大小的,只是用于读取或者修改容器中元素的值。而插入迭代器可以用于向容器中添加元素。

    2.

     std::vector<int> vec;
        auto it = std::back_inserter(vec);//back_inserter用于创建一个vec容器的插入迭代器
        *it = 42;//给创建的插入迭代器赋值相当于调用push_back向容器中添加元素
        for(int i = 0;i<vec.size();i++){
            cout << vec[0] << endl;
        }
     
    3.插入迭代器和fill_n算法结合使用
    fill_n(dest,n,val)。fill_n算法用于向容器中dest位置开始添加n个val元素。
    如果dest为一个容器的起始位置,而容器的长度小于n,那么代码的迭代器会越界导致报错,如:std::vector<int> vec;std::fill_n(vec.begin(),10,0);
    fill_n的算法内部起始是给dest开始的迭代器和后面n-1个迭代器指向的值赋值为val。
    这里如果把dest替换为插入迭代器,那么相当于每次都调用vec的push_back方法插入值val,所以就不会产生越界报错的问题:std::vector<int> vec;std::fill_n(std::back_inserter(vec),10,0);
     
    4.插入迭代器和replace_copy结合使用
    replace迭代器用于将容器中指定值替换为另外一个值,它是在原容器中操作,如果我们希望原容器中的值不变,执行替换后生成一个新的容器,这个新容器中执行了替换操作,那么就要使用replace_copy算法:
     std::vector<int> vec{0,2,2,2,3,4,5,6,7};
        std::vector<int> vec1;
        std::replace_copy(vec.begin(),vec.end(),std::back_inserter(vec1),2,9);
        for(auto item:vec1){
            cout<<item<<endl;
        }
  • 相关阅读:
    for循环嵌套的原理
    php for循环|求1-100之间被3整除且被5不整除的偶数
    php 1-100之间能被3整除的数字之和;
    php判断某年某月有多少天
    关系运算符
    变量
    习题5-7 使用函数求余弦函数的近似值
    习题5-6 使用函数输出水仙花数
    习题4-11 兔子繁衍问题
    习题4-9 打印菱形图案
  • 原文地址:https://www.cnblogs.com/maycpou/p/14693114.html
Copyright © 2020-2023  润新知