亚洲 国产精品 日韩-亚洲 激情-亚洲 欧美 91-亚洲 欧美 成人日韩-青青青草视频在线观看-青青青草影院

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > STL教程(十一):C++ STL常用遍歷算法

STL教程(十一):C++ STL常用遍歷算法

來源:千鋒教育
發布人:syq
時間: 2022-06-22 17:19:57 1655889597

  1、算法概述

  算法主要是由頭文件,和組成。

  是所有STL頭文件中最大的一個,其中常用的功能涉及到比較,交換,查找, 遍歷,復制,修改,反轉,排序,合并等...

  體積很小,只包括在幾個序列容器上進行的簡單運算的模板函數.包括加法乘法在序列上的一些操作。

  定義了一些模板類,用以聲明函數對象

  STL提供了大量實現算法的模版函數,只要我們熟悉了STL之后,許多代碼可以被大大的化簡,只需要通過調用一兩個算法模板,就可以完成所需要的功能,從而大大地提升效率。

  2、算法分類

  根據操作對象 :

  直接改變容器的內容

  將原容器的內容復制一份,修改其副本,然后傳回該副本

  根據功能:

  非可變序列算法 指不直接修改其所操作的容器內容的算法

  計數算法 count、count_if

  搜索算法 search、find、find_if、find_first_of、…

  比較算法 equal、mismatch、lexicographical_compare

  可變序列算法 指可以修改它們所操作的容器內容的算法

  刪除算法 remove、remove_if、remove_copy、…

  修改算法 for_each、transform

  刪除算法 remove、remove_if、remove_copy、…、

  排序算法 包括對序列進行排序和合并的算法、搜索算法以及有序序列上的集合操作

  數值算法 對容器內容進行數值計算

  3、常用遍歷算法

  3.1for_each遍歷算法

/*

遍歷算法 遍歷容器元素

@param beg 開始迭代器

@param end 結束迭代器

@param _callback 函數回調或者函數對象

@return 函數對象

*/

for_each(iterator beg, iterator end, _callback); 

  使用案例:

//普通函數 void print01(int val){ 

cout << val << " "; }//函數對象 struct print001{ 

void operator()(int val)

cout << val << " "; 

} };//for_each算法基本用法 void test01(){ 

vector<int> v; 

for (int i = 0; i < 10;i++)

v.push_back(i); 

}

//遍歷算法

for_each(v.begin(), v.end(), print01); 

cout << endl; 

for_each(v.begin(), v.end(), print001());

cout << endl; 

 }

 struct print02{ 

 print02()

 { 

mCount = 0; 

 }

 void operator()(int val)

 { 

 cout << val << " "; 

 mCount++; 

 }

 int mCount; 

 };

 //for_each返回值

 void test02()

 { 

 vector<int> v; 

 for (int i = 0; i < 10; i++)

 { 

v.push_back(i); 

 }

 print02 p = for_each(v.begin(), v.end(), print02()); 

 cout << endl; 

 cout << p.mCount << endl; }struct print03 : public binary_function<int, int, void>{ 

 void operator()(int val,int bindParam) const

 { 

cout << val + bindParam << " "; 

 } 

 };

 //for_each綁定參數輸出

 void test03(){ 

 vector<int> v; 

 for (int i = 0; i < 10; i++)

 { 

v.push_back(i); 

 }

 for_each(v.begin(), v.end(), bind2nd(print03(),100)); 

 }

  3.2transform遍歷算法

  transform: 與for_each類似,遍歷所有元素,但可對容器的元素進行修改

  作用:

  可以一個容器的元素,通過op,變換到另一個容器中(同一個容器中)

  也可以把兩個容器的元素,通過op,變換到另一個容器中

  注意:

  1.如果目標與源相同,transform()就和for_each()一樣。

  2.如果想以某值替換符合規則的元素,應使用replace()算法

/*

transform算法 將指定容器區間元素搬運到另一容器中

注意 : transform 不會給目標容器分配內存,所以需要我們提前分配好內存

@param beg1 源容器開始迭代器

@param end1 源容器結束迭代器

@param beg2 目標容器開始迭代器

@param _cakkback 回調函數或者函數對象

@return 返回目標容器迭代器

*/

transform(iterator beg1, iterator end1, iterator beg2, _callbakc);

  使用案例:

struct transformTest01{

    int operator()(int val){

        return val + 100;

    }};struct print01{

    void operator()(int val){

        cout << val << " ";

    }};void test01(){

    vector<int> vSource;

    for (int i = 0; i < 10;i ++){

        vSource.push_back(i + 1);

    }

    //目標容器

    vector<int> vTarget;

    //給vTarget開辟空間

    vTarget.resize(vSource.size());

    //將vSource中的元素搬運到vTarget

    vector<int>::iterator it = transform(vSource.begin(), vSource.end(),

    vTarget.begin(), transformTest01());

    //打印

    for_each(vTarget.begin(), vTarget.end(), print01()); cout << endl;

    }//將容器1和容器2中的元素相加放入到第三個容器中struct transformTest02{

    int operator()(int v1,int v2){

        return v1 + v2;

    }};void test02(){

    vector<int> vSource1;

    vector<int> vSource2;

    for (int i = 0; i < 10; i++){

        vSource1.push_back(i + 1);

    }

    //目標容器

    vector<int> vTarget;

    //給vTarget開辟空間

    vTarget.resize(vSource1.size());

    transform(vSource1.begin(), vSource1.end(),

    vSource2.begin(),vTarget.begin(), transformTest02());

    //打印

    for_each(vTarget.begin(), vTarget.end(), print01()); cout << endl;}

  4、for_each()和transform()算法比較

  for_each() 速度快 不靈活

  transform() 速度慢 非常靈活

  for_each所使用的函數對象,參數是引用,沒有返回值void mysquare(int &num);

  transform所使用的函數對象,參數一般不使用引用,而是還有返回值int mysquare2(int num);

  舉例:

void mysquare(int &num){

num = num * num;}int mysquare2(int num) //結果的傳出,必須是通過返回值{

return num = num * num;}void main_foreach_pk_tranform()

{

 vector<int>  v1;

 v1.push_back(1); 

 v1.push_back(3); 

 v1.push_back(5);

 

 vector<int>v2 = v1;

 for_each(v1.begin(), v1.end(), mysquare);

 printAA(v1);

 cout << endl;

 

 transform(v2.begin(), v2.end(), v2.begin(), mysquare2);

 printAA(v2); 

 cout << endl;

}

  更多關于智能物聯網培訓的問題,歡迎咨詢千鋒教育在線名師。千鋒教育擁有多年IT培訓服務經驗,采用全程面授高品質、高體驗培養模式,擁有國內一體化教學管理及學員服務,助力更多學員實現高薪夢想。

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
GAY片男同网站WWW| 亚洲成AV人片在线观看橙子| 无码人妻av免费一区二区三区| 西西人体大胆午夜啪啪| 亚洲欧美VR色区| 99久久精品无码一区二区三区| 拔萝卜视频免费观看高清下载| 国产成人无码一区二区三区在线 | 女人18片毛片60分钟中国| 日本WWW一道久久久免费榴莲 | 国产成年无码久久久久毛片| 护士猛少妇色XXⅩXXX猛叫| 浪潮AV激情高潮国产精品没电了| 欧美一区二区三区精品视频| 同性男男黄H片在线播放网站| 亚洲精品无码成人片久久不卡| 2021精品久久久久精品免费网| 丰满大屁股熟女偷拍内射| 黑人入室强丰满人妻| 男阳茎进女阳道啪啪| 天堂VA欧美ⅤA亚洲VA老司机| 亚洲欧美日韩、中文字幕不卡 | 国产AV无码专区国产乱码| 精品午夜人成一区| 人人婷婷色综合五月第四人色阁| 亚洲ⅤA中文字幕无码| 综合成人亚洲偷自拍色| 国产精品 高清 尿 小便 嘘嘘| 久久久久亚洲AV片无码V| 日本熟妇WWW色视频在线播放| 亚洲AV伊人久久综合密臀性色| 77色午夜成人影院综合网| 国产精品久久久久久久久软件| 久久躁狠狠躁夜夜AV| 特区爱奴在线观看| 在线观看无码AV网址| 国产精品成熟老妇女| 免费国精产品WNW2544| 无人区码一码二码三码是什么意思 | 亚洲人成人一区二区三区| 宝贝乖女小芳小雪| 精品无码乱码AV| 日日摸夜夜添夜夜添无| 夜间十八款禁用软件APP下载 | 色噜噜精品一区二区三区| 亚洲熟伦熟妇AV无码春| 房东老头揉捏吃我奶头影片| 久久五月精品中文字幕| 无码国产成人午夜在线观看| 48熟女嗷嗷叫国产毛片小说| 国产亚洲精久久久久久无码777| 欧美成人精品一区二区| 亚洲国产AⅤ成人精品无吗| 边做饭边被躁BD在线播放| 久久久久久精品免费免费软件 | 欧妇女乱妇女乱视频| 亚洲AV无码成H在线观看| 把腿张开老子CAO烂你NP皇宫| 精品无人乱码高清| 天天玩天天玩天天玩| ASIAN艳丽的少妇PICS| 精品乱码一区二区三区四区| 入禽太深免费视频| 中文字幕无码无码专区| 国色天香看片影院| 色欲AⅤ亚洲情无码AV| 中文字幕乱码人妻综合二区三区 | 成人精品无码一区二区三区| 巨大黑人XXXXX高潮后处理| 亚洲AV成人一区二区三区网站 | 中文字幕在线亚洲日韩6页| 国精品人妻无码一区免费视频电影| 热99RE6久精品国产首页青柠| 一本大道无码人妻精品专区| 国产猛进猛出又黄又爽又色| 日本XXXX裸体XXXX| 最新的国产成人精品2022| 精品无码人妻一区二区三区不卡| 天堂中文在线最新版地址| YEEZY380蜜桃粉和白色| 蜜桃av中文字幕在线| 亚洲清清爽爽AABB| 国产玉足榨精视频在线观看| 日韩一区精品视频一区二区| 97国语精品自产拍在线观看一| 久久精品亚洲中文字幕无码网站| 亚洲AⅤ永久无码精品毛片| 国产办公室沙发系列高清| 人妻系列无码专区无码专区 | 亚洲AV色香蕉一区二区| 高潮大叫喷水发抖抽搐| 人人妻人人妻人人片色AV| 99国精产品灬源码1688| 麻花传媒MD0076沈芯语在线| 亚洲色婷婷六月亚洲婷婷6月| 国精产品自偷自偷综合下载| 无码H肉动漫在线观看| 成熟丰满熟妇高潮XXXXX| 情人伊人久久综合亚洲| 99久久人妻精品免费一区| 久久综合亚洲色一区二区三区| 亚洲精品无码专区久久同性男| 国产区精品福利在线社区| 天堂AV无码大芭蕉伊人AV| 大桥未久亚洲无AV码在线| 人妻少妇伦在线无码| AAAAA级少妇高潮大片免费看| 噜噜狠狠色综合久色AⅤ五区 | 天天综合网天天综合色| 丰满人妻无奈张开双腿AV| 日韩精品专区在线影院重磅| 八戒八戒WWW在线观看| 强奷乱码中文字幕熟女导航| AV在线一区二区三区| 内射丰满熟妇18p一区二区| 性欧美亚洲XXXX乳在线观看| 亚洲国产丝袜精品一区| 国产三级精品三级在线专区1| 天天爱天天做天天做天天吃中文| 丰满人妻熟妇乱偷人无码出轨| 少妇高潮惨叫久久久久久电影| 嗯~使劲~别停~高H漫画| 日日狠狠久久偷偷色综合96| 赤裸人妻撅起肥白大屁股| 色老99久久精品偷偷鲁| 东京热无码AV男人的天堂| 少妇丰满爆乳被呻吟进入| 国产成人18黄网站免费观看| 玩弄白嫩少妇XXXXX性| 国产精品久久久久久婷婷 | 欧美精品VIDEOSEX极品| 91人妻人人妻人人爽人人精品| 欧美丰满熟妇人妻兽交视频| SLEEP强弙VIDE○SHO| 日产乱码一二三区别免费看| 高潮喷视频在线无码| 无码一区二区三区不卡AV| 国产熟妇人妻ⅩXXXX麻豆网址| 亚洲AV午夜福利精品一区二区| 精品国产乱码久久久久夜深人妻 | 无码人妻品一区二区三区精99| 国产女人18毛片水真多| 亚洲精品国产综合久久一线| 久久久亚洲熟妇熟女| 2023国精产品一二二线精华液| 去掉小内打扑克的视频| 大香伊蕉在人线国产最新75| 天堂在\/线中文在线8| 国产又色又爽又刺激在线播放| 亚洲精品卡一卡2卡3卡4卡| 老头扒开粉嫩的小缝亲吻网站| 99热精品国产三级在线| 撒尿特写XXXⅩ| 国产午夜成人AV在线播放| 亚洲日韩中文第一精品| 男女性色大片免费网站| 成人免费A级毛片天天看| 午夜成人影片在线观看免费完整高 | 91人妻人人澡人爽人精品 | 波多野结衣AV黑人在线播放| 熟女少妇丰满一区二区| 好硬好大好爽18禁免费看男男| 野花视频在线手机免费观看| 欧美A片XⅩX黑人性受| 岛国AV在线无码播放| 亚洲 小说区 图片区 都市| 久久高清内射无套| A男人的天堂久久A毛片| 天干天干天啪啪夜爽爽色| 狠狠色丁香五月综合婷婷| 中文字幕无码专区人妻制服| 日韩码一码二码三码区别| 国产在线乱码一区二区三区| 玉蒲团之极乐宝鉴| 日本少妇人妻XXXXX18免费| 国产亚洲人成A在线V网站| 中国无码人妻丰满熟妇啪啪软件| 日本一品和二品区别| 和朋友换娶妻一起换着高清| 中国熟妇色XXXX欧美老妇多毛| 日产精品一线二线三线优势| 好男人好资源影视在线| 69无人区码一码二码三码区别| 天堂AV无码一区二区三区| 久久久精品国产SM调教网站| 被多个男人调教奶头玩奶头 | 国产亚洲曝欧美不卡精品| 中文字幕久久熟女蜜桃| 贪婪洞窟H5双修流攻略小说| 久久精品人人做人人爽电影| 菠萝视频高清视频在线7| 亚洲国产精品久久久就秋霞| 欧美视频在线一区| 国精产品一区二区三区四区糖心| 99久久国产综合精品五月天喷水 | 日本精品视频一区二区| 狠狠色狠狠色综合久久| JK女自慰下面爆浆喷水| 亚洲产在线精品亚洲第一站一 | AV无码AV无码专区|