色综合老司机第九色激情 _中文字幕日韩av资源站_国产+人+亚洲_久久久精品影院_久久久视频免费观看_欧美激情亚洲自拍_亚洲成av人片在线观看香蕉_热草久综合在线_欧美极品第一页_2020国产精品自拍

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

手機站
千鋒教育

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

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

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

當前位置:首頁  >  技術干貨  > 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
色综合老司机第九色激情 _中文字幕日韩av资源站_国产+人+亚洲_久久久精品影院_久久久视频免费观看_欧美激情亚洲自拍_亚洲成av人片在线观看香蕉_热草久综合在线_欧美极品第一页_2020国产精品自拍
欧美激情一区二区三区在线| 午夜精品123| 亚洲免费观看高清完整版在线观看| 日韩在线卡一卡二| 中文字幕中文在线不卡住| 国产一区视频网站| 欧美变态凌虐bdsm| 欧美色窝79yyyycom| 亚洲日本在线看| 国产精品乱人伦中文| 久久伊人中文字幕| 免播放器亚洲一区| 在线观看成人小视频| 亚洲激情网站免费观看| 欧美私人免费视频| 91麻豆免费观看| 亚洲一二三区在线观看| 欧美日韩三级一区| 国产一区二区不卡在线| 亚洲欧美影音先锋| 3d成人h动漫网站入口| 国产综合久久久久影院| 亚洲三级久久久| 欧美一级专区免费大片| av一区二区三区四区| 日韩av二区在线播放| 国产精品少妇自拍| 日韩欧美成人一区二区| 97精品久久久午夜一区二区三区| 蜜臀av一区二区在线免费观看 | 国产精品自在在线| 亚洲精品高清在线| 国产精品久久久久影院| 久久久久久久网| 91精品欧美久久久久久动漫 | 欧美嫩在线观看| 成人免费看片app下载| 日产精品久久久久久久性色| 亚洲免费观看高清完整版在线观看熊| 日韩精品一区二区三区在线| 欧美日韩一区二区三区四区| 91久久精品午夜一区二区| 国产一区二区在线免费观看| 麻豆免费精品视频| 91视频一区二区| av在线播放成人| 日韩欧美二区三区| 亚洲激情男女视频| 91精品国产综合久久久蜜臀图片| 国产精品亚洲视频| 一个色在线综合| 《视频一区视频二区| 秋霞午夜鲁丝一区二区老狼| 五月天国产精品| 国产欧美在线观看一区| 成人免费视频一区二区| 亚洲人成人一区二区在线观看 | 99精品国产一区二区三区不卡| 亚洲成人动漫一区| 国产美女精品一区二区三区| 视频一区二区三区中文字幕| 性久久久久久久| 久久精品久久综合| 久久不见久久见免费视频7 | 风流少妇一区二区| 国产综合色精品一区二区三区| 国内不卡的二区三区中文字幕| 黑人巨大精品欧美黑白配亚洲| 国产一区二区伦理片| 丁香婷婷综合色啪| 91免费看`日韩一区二区| 色欧美片视频在线观看| 在线播放日韩导航| 久久久久国产一区二区三区四区 | 亚洲码国产岛国毛片在线| 亚洲一区二区不卡免费| 日韩不卡一二三区| 国产精品一区二区91| 国产精品久久毛片a| 91免费看视频| 亚洲图片欧美一区| 成人a免费在线看| 91麻豆精品国产91久久久 | 7777精品伊人久久久大香线蕉 | youjizz国产精品| 成人免费高清在线| 亚洲免费看黄网站| 五月激情丁香一区二区三区| 色哟哟欧美精品| 欧美男女性生活在线直播观看| 久久香蕉国产线看观看99| 亚洲欧美色一区| 国产麻豆成人传媒免费观看| 91蝌蚪porny| 香蕉久久夜色精品国产使用方法 | 婷婷国产v国产偷v亚洲高清| 欧美精品日日鲁夜夜添| 欧美草草影院在线视频| 亚洲午夜视频在线| 国产精品一区二区不卡| 日韩欧美成人一区二区| 粉嫩在线一区二区三区视频| 欧美性色黄大片| 国产精品免费视频观看| 国产精品一区二区三区99| av电影一区二区| 91麻豆精品91久久久久同性| 日本丰满少妇一区二区三区| 老司机免费视频一区二区三区| 亚洲电影在线播放| 国产精品久久久久久久久搜平片 | 色婷婷综合五月| 99麻豆久久久国产精品免费| 欧美伊人久久久久久久久影院 | 日韩精品资源二区在线| 亚洲成在线观看| 国产精品无码永久免费888| 欧美色区777第一页| 91麻豆精品国产91久久久久久久久| 日韩国产欧美在线观看| 欧美伊人精品成人久久综合97| 国产精品欧美精品| 色呦呦网站一区| 午夜精品久久久久久| 欧美一级在线免费| 国产999精品久久久久久绿帽| 亚洲欧洲精品天堂一级| 精品视频免费看| 美女视频黄a大片欧美| 欧美一区二区三区视频免费播放| 日本欧美一区二区三区乱码| 日韩免费电影网站| 99久久久国产精品| 日韩av一二三| 最新中文字幕一区二区三区| 欧美性淫爽ww久久久久无| 久久国产视频网| 亚洲免费色视频| 久久久久久久综合| 欧美日精品一区视频| 国产精品一区二区91| 一区二区日韩电影| 久久久777精品电影网影网 | 亚洲天堂免费看| 欧美一区二区在线看| 成人av高清在线| 蜜臀av一区二区在线观看| 亚洲女爱视频在线| 国产亚洲一区字幕| 91精品国产一区二区三区蜜臀| 成人一区二区三区中文字幕| 美女一区二区三区在线观看| 国产色综合一区| 日韩视频123| 免费人成网站在线观看欧美高清| 成人一区二区三区视频在线观看| 久久色.com| 成人性色生活片免费看爆迷你毛片| 色诱视频网站一区| 一区二区三区中文字幕在线观看| 欧美一区二区三区四区五区| 久久你懂得1024| 国产精品一区在线观看乱码| 日韩电影在线一区二区三区| 1024成人网| 日本一二三不卡| 91精品国产免费| 日韩伦理免费电影| 午夜久久福利影院| 中文字幕欧美日本乱码一线二线 | 日韩综合在线视频| 欧美国产一区视频在线观看| 精品国产99国产精品| 欧美日韩视频不卡| 色综合一个色综合亚洲| 日韩电影一二三区| 精品国产露脸精彩对白| 久久丁香综合五月国产三级网站 | 欧美婷婷六月丁香综合色| 亚洲综合一区二区精品导航| 精品久久久久久久一区二区蜜臀| 成人丝袜高跟foot| 日本久久电影网| 久久精品国产亚洲高清剧情介绍| 一区二区高清免费观看影视大全| 在线观看三级视频欧美| 蜜桃视频一区二区三区| 成人国产精品免费观看| 韩国v欧美v日本v亚洲v| 中文文精品字幕一区二区| 2021中文字幕一区亚洲| 精品久久久网站| 欧美一区日韩一区| 成人免费看片app下载| 日韩理论片中文av| 欧美xxxxx裸体时装秀| 欧美性一区二区| 免费观看一级特黄欧美大片| 亚洲一区二区精品久久av| 国产精品午夜春色av|