日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++之vector容器初学(二)——插入和删除

發(fā)布時(shí)間:2024/4/18 c/c++ 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++之vector容器初学(二)——插入和删除 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

插入操作:

理論知識(shí)

2?vector.insert(pos,elem); ??//在pos位置插入一個(gè)elem元素的拷貝,返回新數(shù)據(jù)的位置。

2?vector.insert(pos,n,elem); ??//在pos位置插入n個(gè)elem數(shù)據(jù),無返回值。

2?vector.insert(pos,beg,end); ??//在pos位置插入[beg,end)區(qū)間的數(shù)據(jù),無返回值?

簡單案例

vector<int> vecA;

vector<int> vecB;

?

vecA.push_back(1);

vecA.push_back(3);

vecA.push_back(5);

vecA.push_back(7);

vecA.push_back(9);

?

vecB.push_back(2);

vecB.push_back(4);

vecB.push_back(6);

vecB.push_back(8);

?

vecA.insert(vecA.begin(), 11); //{11, 1, 3, 5, 7, 9}

vecA.insert(vecA.begin()+1,2,33); //{11,33,33,1,3,5,7,9}

vecA.insert(vecA.begin() , vecB.begin() , vecB.end() ); //{2,4,6,8,11,33,33,1,3,5,7,9}

測試代碼:

?

[cpp]?view plain?copy

  • #include?<iostream>??
  • using?namespace?std;??
  • #include?"vector"??
  • ??
  • void?printV(vector<int>?&v)??
  • {??
  • ????for?(int?i?=?0;?i?<?v.size();i++)??
  • ????{??
  • ????????cout?<<v[i]<<?"?";??
  • ????}??
  • ????cout?<<?endl;??
  • }??
  • ??
  • //插入操作??
  • void?main1()??
  • {??
  • ????vector<int>?v1;??
  • ????v1.insert(v1.begin(),1);//在開始位置插入元素1??
  • ????printV(v1);??
  • ????v1.insert(v1.begin(),2,33);//在開始位置插入兩個(gè)33??
  • ????printV(v1);??
  • ????v1.insert(v1.begin(),v1.begin(),v1.end());//在開始位置插入整個(gè)區(qū)間元素??
  • ????printV(v1);??
  • }??
  • ??
  • ??
  • int?main()??
  • {??
  • ??????
  • ????cout?<<?"插入操作:"?<<?endl;??
  • ????main1();??
  • ????return?0;??
  • }??

  • ?

    ?

    vector的刪除

    理論知識(shí)

    2?vector.clear(); //移除容器的所有數(shù)據(jù)

    2?vec.erase(beg,end); ?//刪除[beg,end)區(qū)間的數(shù)據(jù),返回下一個(gè)數(shù)據(jù)的位置。

    2?vec.erase(pos); ???//刪除pos位置的數(shù)據(jù),返回下一個(gè)數(shù)據(jù)的位置。

    簡單案例:

    刪除區(qū)間內(nèi)的元素

    vecInt是用vector<int>聲明的容器,現(xiàn)已包含按順序的1,3,5,6,9元素。

    vector<int>::iterator itBegin=vecInt.begin()+1;

    vector<int>::iterator itEnd=vecInt.begin()+2;

    vecInt.erase(itBegin,itEnd);

    //此時(shí)容器vecInt包含按順序的1,6,9三個(gè)元素。

    ?

    假設(shè)?vecInt?包含1,3,2,3,3,3,4,3,5,3,刪除容器中等于3的元素

    for(vector<int>::iterator it=vecInt.being(); it!=vecInt.end(); ) ???//小括號(hào)里不需寫 ?++it

    {

    ???if(*it == 3)

    ???{

    ????????it ?= ?vecInt.erase(it); ??????//以迭代器為參數(shù),刪除元素3,并把數(shù)據(jù)刪除后的下一個(gè)元素位置返回給迭代器。

    ?????????//此時(shí),不執(zhí)行 ?++it; ?

    ???}

    ???else

    ???{

    ???????++it;

    ???}

    }

    ?

    //刪除vecInt的所有元素

    vecInt.clear(); //容器為空

    ?

    測試代碼:

    ?

    [cpp]?view plain?copy

  • #include?<iostream>??
  • using?namespace?std;??
  • #include?"vector"??
  • ??
  • void?printV(vector<int>?&v)??
  • {??
  • ????for?(int?i?=?0;?i?<?v.size();i++)??
  • ????{??
  • ????????cout?<<v[i]<<?"?";??
  • ????}??
  • ????cout?<<?endl;??
  • }??
  • ??
  • ??
  • //刪除操作??
  • void?main2()??
  • {??
  • ????vector<int>?v1(10);??
  • ????for?(int?i?=?0;?i?<?v1.size();?i++)??
  • ????{??
  • ????????v1[i]?=?i?+?1;??
  • ????}??
  • ????printV(v1);??
  • ????v1.erase(v1.begin(),v1.begin()+4);//區(qū)間刪除??
  • ????printV(v1);??
  • ????v1.erase(v1.begin());//頭部刪除??
  • ????printV(v1);??
  • ????v1[0]?=?23;??
  • ????v1[1]?=?22;??
  • ????printV(v1);??
  • ????for?(vector<int>::iterator?it?=?v1.begin();?it?!=?v1.end();)//刪除容器里等于8的元素??
  • ????{??
  • ????????if?(*it?==?8)??
  • ????????{??
  • ????????????it?=?v1.erase(it);??
  • ????????}??
  • ????????else??
  • ????????????it++;??
  • ????}??
  • ????printV(v1);??
  • }??
  • ??
  • int?main()??
  • {??
  • ????cout?<<?"刪除操作:"?<<?endl;??
  • ????main2();??
  • ????return?0;??
  • }??

  • 總結(jié)

    以上是生活随笔為你收集整理的C++之vector容器初学(二)——插入和删除的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。