C++ STL迭代器 -- 插入迭代器

来源:互联网 发布:163邮箱设置 imap端口 编辑:程序博客网 时间:2024/04/29 13:49
#include "stdafx.h"#include <iostream>#include <vector>#include <list>#include <algorithm>#include <iterator>/**  算法库对所有在容器上的操作有个承诺:决不修改容器的大小(不插入、不删除)。*  有了插入迭代器,既使得算法库可以通过迭代器对容器插入新的元素,又不违反这一承诺,即保持了设计上的一致性。*/using namespace std;int main(){    //c++插入迭代器    vector<int> vInt = { 1,2,3,4,5 };    list<int> listInt;    //向后插入迭代器,内部调用push_back    back_insert_iterator<decltype(listInt)> backIter(listInt);    *backIter = 30;    //copy算法中的 运用    copy(vInt.begin(), vInt.end(), back_insert_iterator<decltype(listInt)>(listInt));    for (auto iter = listInt.begin(); iter != listInt.end(); ++iter)    {        cout << *iter << " ";    }    cout << endl;    //向前插入迭代器,内部调用push_front    front_insert_iterator<decltype(listInt)> frontIter(listInt);    *backIter = 30;    //copy算法中的 运用    copy(vInt.begin(), vInt.end(), front_insert_iterator<decltype(listInt)>(listInt));    for (auto iter = listInt.begin(); iter != listInt.end(); ++iter)    {        cout << *iter << " ";    }    cout << endl;    //在第三个元素的位置插入元素    auto iter = listInt.begin();    int pos = 3;                //获取位置    while (--pos)    {        ++iter;    }    //获取插入迭代器    auto iIter = insert_iterator<decltype(listInt)>(listInt,iter);    *iIter = 35;    for (auto iter = listInt.begin(); iter != listInt.end(); ++iter)    {        cout << *iter << " ";    }    cout << endl;    return 0;}
原创粉丝点击