亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

STL中的常用算法介紹

2020-02-24 14:31:37
字體:
來源:轉載
供稿:網(wǎng)友

對于STL中的常用算法相信很多朋友們都會好奇的,那么STL中的常用算法有哪些呢?那么我們現(xiàn)在就去看看STL中的常用算法介紹,感興趣的朋友們一起來看看吧。

一、非變異算法

是一組不破壞操作數(shù)據(jù)的模板函數(shù),用來對序列數(shù)據(jù)進行逐個處理、元素查找、子序列搜索、統(tǒng)計和匹配。非變異算法具有極為廣泛的適用性,基本上可應用與各種容器。

1查找容器元素find

它用于查找等于某值的元素。它在迭代器區(qū)間[first,last)(閉開區(qū)間)上查找等于value值的元素,如果迭代器i所指的元素滿足*i=value,則返回迭代器i;未找到滿足條件的元素,返回last。函數(shù)原型:find( v1.begin(), v1.end(), num_to_find );

?

#include <vector>

?

#include <algorithm>

#include <iostream>

using namespace std;

void main()

{

int num_to_find = 6;

vector<int> v1;

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

v1.push_back(2*i);

vector<int>::iterator result;

result = find( v1.begin(), v1.end(), num_to_find );

if( result == v1.end() )

cout << "未找到任何元素匹配 " << num_to_find << endl;

else

cout << "匹配元素的索引值是 " << result-v1.begin() << endl;

}


2條件查找容器元素find_if

?

利用返回布爾值的謂詞判斷pred,檢查迭代器區(qū)間[first,last)(閉開區(qū)間)上的每一個元素,如果迭代器i滿足pred(*i)=true,表示找到元素并返回迭代值i(找到的第一個符合條件的元素);未找到元素,返回末位置last。函數(shù)原型:find_if(v.begin(),v.end(),divby5);

?

#include <vector>

?

#include <algorithm>

#include <iostream>

using namespace std;

bool divby5(int x)

{

return x%5?0:1;

}

void main()

{

vector<int> v(20);

for(int i=0;i<v.size();i++)

{

v[i]=(i+1)*(i+3);

cout<<v[i]<<' ';

}

cout<<endl;

vector<int>::iterator ilocation;

ilocation=find_if(v.begin(),v.end(),divby5);

if(ilocation!=v.end())

cout<<"找到第一個能被5整除的元素:"<<*ilocation<<endl<<"元素的索引位置是: "<<ilocation-v.begin()<<endl;

}


3統(tǒng)計等于某值的容器元素個數(shù)count

?

list<int> l;
count(l.begin(),l.end(),value)

4條件統(tǒng)計count_if

count_if(l.begin(),l.end(),pred)。謂詞pred含義同find_if中的謂詞。例子可以參考例2.

5子序列搜索search

search算法函數(shù)在一個序列中搜索與另一序列匹配的子序列。參數(shù)分別為一個序列的開始位置,結束位置和另一個序列的開始,結束位置。

函數(shù)原型:search(v1.begin(),v1.end(),v2.begin(),v2.end());

?

#include <vector>

?

#include <algorithm>

#include <iostream>

using namespace std;

void main()

{

vector<int> v1;

cout<<"v1:";

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

{

v1.push_back(i+5);

//注意:v1定義時沒有給定大小,因此這里不能直接使用賦值語句。

cout<<v1[i]<<' ';

}

cout<<endl;

vector<int> v2;

cout<<"v2:";

for(i=0;i<2;i++)

{

v2.push_back(i+7);

cout<<v2[i]<<' ';

}

cout<<endl;

vector<int>::iterator ilocation;

ilocation=search(v1.begin(),v1.end(),v2.begin(),v2.end());

if(ilocation!=v1.end())

cout<<"v2的元素包含在v1中,起始元素為"<<"v1["<<ilocation-v1.begin()<<']'<<endl;

else

cout<<"v2的元素不包含在v1中"<<endl;

}


6重復元素子序列搜索search_n

?

search_n算法函數(shù)搜索序列中是否有一系列元素值均為某個給定值的子序列。函數(shù)原型:search_n(v.begin(),v.end(),3,8),在v中找到3個連續(xù)的元素8

?

#include <vector>

?

#include <algorithm>

#include <iostream>

using namespace std;

void main()

{

vector<int> v;

v.push_back(1);

v.push_back(8);

v.push_back(8);

v.push_back(8);

v.push_back(6);

v.push_back(6);

v.push_back(8);

vector<int>::iterator i;

i=search_n(v.begin(),v.end(),3,8);

if(i!=v.end())

cout<<"在v中找到3個連續(xù)的元素8"<<endl;

else

cout<<"在v中未找到3個連續(xù)的元素8"<<endl;

}


7最后一個子序列搜索find_end

?

函數(shù)原型find_end(v1.begin(),v1.end(),v2.begin(),v2.end());在V1中要求的位置查找V2中要求的序列。

?

#include <vector>

?

#include <algorithm>

#include <iostream>

using namespace std;

?

void main()

{

vector<int> v1;

v1.push_back(-5);

v1.push_back(1);

v1.push_back(2);

v1.push_back(-6);

v1.push_back(-8);

v1.push_back(1);

v1.push_back(2);

v1.push_back(-11);

vector<int> v2;

v2.push_back(1);

v2.push_back(2);

vector<int>::iterator i;

i=find_end(v1.begin(),v1.end(),v2.begin(),v2.end());

if(i!=v1.end())

cout<<"v1中找到最后一個匹配v2的子序列,位置在" <<"v1["<<i-v1.begin()<<"]"<<endl;

}


二、變異算法

?

是一組能夠修改容器元素數(shù)據(jù)的模板函數(shù)。copy(v.begin(),v.end(),l.begin());將v中的元素復制到l中。

1 元素復制copy

?

#include <vector>

?

#include <list>

#include <algorithm>

#include <iostream>

using namespace std;

void main()

{

vector<int> v;

v.push_back(1);

v.push_back(3);

v.push_back(5);

?

list<int> l;

l.push_back(2);

l.push_back(4);

l.push_back(6);

l.push_back(8);

l.push_back(10);

copy(v.begin(),v.end(),l.begin());

list<int>::iterator i;

for(i=l.begin();i!=l.end();i++)

cout<<*i<<' ';

cout<<endl;

}


2 元素變換transform改變

?

函數(shù)原型:transform(v.begin(),v.end(),l.begin(),square);也是復制,但是要按某種方案復制。

?

#include <vector>

?

#include <list>

#include <algorithm>

#include <iostream>

using namespace std;

?

int square(int x)

{

return x*x;

}

void main()

{

vector<int> v;

v.push_back(5);

v.push_back(15);

v.push_back(25);

list<int> l(3);

transform(v.begin(),v.end(),l.begin(),square);

list<int>::iterator i;

for(i=l.begin();i!=l.end();i++)

cout<<*i<<' ';

cout<<endl;

}


3 替換replace

?

replace算法將指定元素值替換為新值。

?

#include <vector>

?

#include <algorithm>

#include <iostream>

using namespace std;

void main()

{

vector<int> v;

v.push_back(13);

v.push_back(25);

v.push_back(27);

v.push_back(25);

v.push_back(29);

replace(v.begin(),v.end(),25,100);

vector<int>::iterator i;

for(i=v.begin();i!=v.end();i++)

cout<<*i<<' ';

cout<<endl;

}


輸出結果為13 100 27 100 29

?

4 條件替換replace_if

函數(shù)原型:replace_if(v.begin(),v.end(),odd,100);

?

#include <vector>

?

#include <algorithm>

#include <iostream>

using namespace std;

bool odd(int x)

{

return x%2;

}

void main()

{

vector<int> v;

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

v.push_back(i);

replace_if(v.begin(),v.end(),odd,100);

vector<int>::iterator ilocation;

for(ilocation=v.begin();ilocation!=v.end();ilocation++)

cout<<*ilocation<<' ';

cout<<endl;

}


5 n次填充fill_n

?

函數(shù)原型fill_n(v.begin(),5,-1);向從v.begin開始的后面5個位置跳入-1

?

#include <vector>

?

#include <algorithm>

#include <iostream>

using namespace std;

void main()

{

vector<int> v(10);

fill_n(v.begin(),5,-1);

vector<int>::iterator ilocation;

for(ilocation=v.begin();ilocation!=v.end();ilocation++)

cout<<*ilocation<<' ';

cout<<endl;

}


輸出結果:-1 -1 -1 -1 -1 0 0 0 0 0

?

6 隨機生成n個元素generate

函數(shù)原型:generate_n(v.begin(),5,rand);向從v.begin開始的后面5個位置隨機填寫數(shù)據(jù)。

?

#include <vector>

?

#include <algorithm>

#include <iostream>

using namespace std;

void main()

{

vector<int> v(10);

generate_n(v.begin(),5,rand);

vector<int>::iterator ilocation;

for(ilocation=v.begin();ilocation!=v.end();ilocation++)

cout<<*ilocation<<' ';

cout<<endl;

}


7 條件移除remove_if

?

返回值相當于移除滿足條件的元素后形成的新向量的end()值。

函數(shù)原型:remove_if(v.begin(),v.end(),even);

?

#include <vector>

?

#include <algorithm>

#include <iostream>

using namespace std;

bool even(int x)

{

return x%2?0:1;

}

void main()

{

vector<int> v;

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

v.push_back(i);

vector<int>::iterator ilocation,result;

cout<<"移除前:";

for(ilocation=v.begin();ilocation!=v.end();ilocation++)

cout<<*ilocation<<' ';

cout<<endl;

result=remove_if(v.begin(),v.end(),even);

cout<<"移除后:";

for(ilocation=v.begin();ilocation!=result;ilocation++)

cout<<*ilocation<<' ';

cout<<endl;

}


8 剔除連續(xù)重復元素unique

?

函數(shù)原型:unique(v.begin(),v.end());

?

#include <vector>

?

#include <algorithm>

#include <iostream>

using namespace std;

void main()

{

vector<int> v;

v.push_back(2);

v.push_back(6);

v.push_back(6);

v.push_back(6);

v.push_back(9);

v.push_back(6);

v.push_back(3);

vector<int>::iterator ilocation,result;

result=unique(v.begin(),v.end());

for(ilocation=v.begin();ilocation!=result;ilocation++)

cout<<*ilocation<<' ';

cout<<endl;

}


輸出結果:2 6 9 6 3

?

三、排序算法

1、創(chuàng)建堆make_heap

2、元素入堆push_heap(默認插入最后一個元素)

3、元素出堆pop_heap(與push_heap一樣,pop_heap必須對堆操作才有意義)

?

#include <vector>

?

#include <algorithm>

#include <iostream>

using namespace std;

void main()

{

vector<int> v;

v.push_back(5);

v.push_back(6);

v.push_back(4);

v.push_back(8);

v.push_back(2);

v.push_back(3);

v.push_back(7);

v.push_back(1);

v.push_back(9);

make_heap(v.begin(),v.end());

v.push_back(20);

push_heap(v.begin(),v.end());

vector<int>::iterator ilocation;

for(ilocation=v.begin();ilocation!=v.end();ilocation++)

cout<<*ilocation<<' ';

cout<<endl;

pop_heap(v.begin(),v.end());

for(ilocation=v.begin();ilocation!=v.end();ilocation++)

cout<<*ilocation<<' ';

cout<<endl;

}


4 堆排序sort_heap

?

使用:

?

make_heap(v.begin(),v.end());

?

sort_heap(v.begin(),v.end());

#include <vector>

#include <algorithm>

#include <iostream>

using namespace std;

void main()

{

vector<int> v;

v.push_back(3);

v.push_back(9);

v.push_back(6);

v.push_back(3);

v.push_back(17);

v.push_back(20);

v.push_back(12);

vector<int>::iterator ilocation;

for(ilocation=v.begin();ilocation!=v.end();ilocation++)

cout<<*ilocation<<' ';

cout<<endl;

make_heap(v.begin(),v.end());

sort_heap(v.begin(),v.end());

for(ilocation=v.begin();ilocation!=v.end();ilocation++)

cout<<*ilocation<<' ';

cout<<endl;

}


輸出結果:

?

3 9 6 3 17 20 12
3 3 6 9 12 17 20

5 排序sort

函數(shù)原型:sort(v.begin(),v.end());

?

#include <vector>

?

#include <algorithm>

#include <iostream>

using namespace std;

void main()

{

vector<int> v;

v.push_back(2);

v.push_back(8);

v.push_back(-15);

v.push_back(90);

v.push_back(26);

v.push_back(7);

v.push_back(23);

v.push_back(30);

v.push_back(-27);

v.push_back(39);

v.push_back(55);

vector<int>::iterator ilocation;

for(ilocation=v.begin();ilocation!=v.end();ilocation++)

cout<<*ilocation<<' ';

cout<<endl;

sort(v.begin(),v.end());//比較函數(shù)默認

for(ilocation=v.begin();ilocation!=v.end();ilocation++)

cout<<*ilocation<<' ';

cout<<endl;

}

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助~如果有疑問大家可以留言交流,謝謝大家對武林技術頻道的支持!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

亚洲熟女少妇一区二区| 免费看欧美女人艹b| 国产精品一区二区三区乱码| 日韩一区二区在线观看视频| 五月综合久久| 中文字幕一区二区三区四区五区人| 国产在线观看黄色| 国产成人精品一区二区三区四区| 成人h精品动漫一区二区三区| 日韩欧美精品在线观看视频| 欧美日韩不卡一区| 久久国产精品99久久人人澡| 欧美a级片视频| 国产一区二区色噜噜| 性xx十八spa按摩| 不许穿内裤随时挨c调教h苏绵| 成人av中文字幕| 久久精品免费看| 999福利视频| 夜夜嗨网站十八久久| 在线免费视频你懂得| 日本午夜精品一区二区三区电影| 91网站在线观看免费| 中文字幕日本不卡| 色多多在线观看| 9999精品成人免费毛片在线看| 成人黄色大片网站| 久久久之久亚州精品露出| 91产国在线观看动作片喷水| 91综合精品国产丝袜长腿久久| 一区二区高清在线| 国产麻豆高清视频在线第一页| 日日躁天天躁狠狠躁| 欧美国产精品一区| 一个人看的日本www的免费视频| 国产精品久久久久久久美男| 国产精品日本| 成人福利电影| 亚洲第一色视频| 6—12呦国产精品| 超碰色偷偷男人的天堂| 奇米777在线视频| 欧美日韩国产一区在线| 97在线视频人妻无码| 鬼打鬼之黄金道士1992林正英| 久久久久久久久久久久久久一区| 国产日韩综合一区二区性色av| 毛片不卡一区二区| 国产精品二三区| 亚洲aⅴ网站| 91久久人澡人人添人人爽欧美| 日韩在线综合网| 久久爱.com| 蜜桃麻豆影像在线观看| 99国产精品一区二区三区| 国产成人免费av| 国产精品一区二区免费| 欧美hentaied在线观看| 狠狠干五月天| 国产精品久久久久秋霞鲁丝| 亚洲伊人春色| 日韩av电影在线观看| 成人免费短视频| 岛国av一区二区三区| 久久综合色播| 91国产一区在线| 国产黑丝一区二区| 杨幂一区二区国产精品| 午夜精品久久久久久久| 欧美一区二区三区在线观看| 国产免费视频在线| 久久精品亚洲国产奇米99| 成人动漫在线观看视频| 激情五月开心婷婷| 性欧美一区二区三区| 在线观看视频日韩| 午夜激情久久久| 黄色手机在线视频| 黄色小说综合网站| 国内成人在线| 国产成人精品av久久| 国产免费一区二区三区最新不卡| 成人教育av在线| 欧美精品日韩综合在线| 欧美成人免费观看| 国产精品久久久网站| 女人被狂躁c到高潮| 午夜精品久久久久久久91蜜桃| 风间由美中文字幕在线看视频国产欧美| 91免费视频网址| 在线精品视频免费观看| 中文字幕在线二区| www.久久99| 五月天婷婷在线观看视频| 国产精品视频观看| 久久久久久国产精品免费无遮挡| 好吊操这里只有精品| 国产精品久久久久久免费| 伊人影院在线视频| 亚洲v日本v欧美v久久精品| 久久久久久久久艹| 色8久久人人97超碰香蕉987| 欧美亚洲一区| 久久密一区二区三区| 亚洲激情中文在线| 91久久久国产精品| 亚洲精品国产精品国自产网站按摩| 欧美一区二区大胆人体摄影专业网站| **性色生活片久久毛片| 男人天堂手机在线| 亚洲地区一二三色| 国产精品久久久久99| 国产日韩欧美在线观看| 国产成人精品av| 妖精视频一区二区三区免费观看| 图片婷婷一区| 97精品国产97久久久久久久久久久久| 日韩一区二区不卡| 2019中文在线观看| 狠狠躁夜夜躁人人爽视频| 国产精品19乱码一区二区三区| 中文字幕亚洲视频| 亚洲综合av网| 性欧美大战久久久久久久| 老熟妻内射精品一区| 欧美日韩一区二区三| 久草在线资源福利| 久久精品一本久久99精品| 欧美黑人精品一区二区不卡| 免费无码不卡视频在线观看| 精品视频网站| 国产精品区一区二区三在线播放| rebdb初裸写真在线观看| 精品日韩在线播放| 99re8这里只有精品| 国产精品一区在线观看你懂的| 国产精品久久久久久久美男| 国产露脸91国语对白| 3d性欧美动漫精品xxxx软件| missav|免费高清av在线看| 97精品人人妻人人| 91精品国产91热久久久做人人| 欧美最顶级丰满的aⅴ艳星| 亚洲精品国产精| 中文另类视频| 欧美图片一区二区三区| 亚洲最大免费| av电影高清在线观看| 中文字幕第21页| 欧美r级电影在线观看| 国产aⅴ精品一区二区三区黄| 久久人人爽av| 色妞欧美日韩在线| 日韩av在线播放中文字幕| 日韩av网站在线| 免费黄色网网址| 九色porny极品| 强开小嫩苞一区二区三区网站| 熟女av一区二区| 欧美福利在线播放网址导航| 亚洲精品中文字幕乱码三区不卡| 国产videos久久| 91精品国产综合久久香蕉麻豆| 色资源网在线观看| 日韩资源在线观看| 在线一区二区不卡| 中文字幕自拍vr一区二区三区| 久久精品综合| 在线手机福利影院| 天天做夜夜操| 久久国产精品无码一级毛片| 国产精品一区二区3区| 国产精品老女人视频| 不卡电影免费在线播放一区| 四虎影视永久免费在线观看一区二区三区| 奶水喷射视频一区| 亚洲精品视频网址| 日韩中文字幕不卡| 日本少妇做爰全过程毛片| 欧美一区二视频在线免费观看| 亚洲永久免费视频| 激情亚洲一区二区三区四区| 日韩中文字幕组| 在线亚洲午夜片av大片| 亚洲国产精品网站| 蜜桃视频一区| 日本黄色网址大全| 老牛国产精品一区的观看方式| 精品一区二区精品| 色伦专区97中文字幕| 一本色道久久| 亚洲国产精品久久一线不卡| 黄色小视频在线观看| 欧美电影h版| 亚洲自拍偷拍网址| 国产bdsm视频| 中文字幕有码av| 91亚洲精品乱码久久久久久蜜桃| 在线播放av中文字幕| 国产国产精品| 91久久国产视频| 久久精品亚洲牛牛影视| 亚洲精华一区二区三区| 日韩欧美国产一区在线观看| 国产手机精品在线| 国产精品日韩久久久| www.日本xxxx| 日本人视频jizz页码69| caoporen国产精品视频| 国产女人爽到高潮a毛片| 传媒视频在线| 欧美老女人在线视频| 不卡一区二区在线观看| 奇米网一区二区| 成人做爰视频网站| 91午夜视频在线观看| 美女视频一区二区三区| 十大黄色软件免费看| 精品国产一区二区三区久久久樱花| 亚洲精品韩国| 中文字幕 欧美日韩| 亚洲三级影院| 隣の若妻さん波多野结衣| 亚洲中文字幕无码专区| 四虎国产精品成人免费4hu| 精品一区二区三区在线播放| 91麻豆精品国产自产在线观看一区| 色综合天天综合色综合av| 男女羞羞视频在线观看| 国内欧美日韩| 欧美熟乱第一页| 欧美一区=区三区| 精品一区av| 精品国产www| 在线观看免费视频黄| 国产精品国产精品国产专区不卡| 四虎成人精品永久免费av九九| 久久www免费人成精品| 精品无线一线二线三线| 少妇户外露出[11p]| 亚洲精品国产一区二区三区| av一区二区三区| 免费在线观看的av网站| 91av免费观看91av精品在线| 偷偷色噜狠狠狠狠的777米奇| 日韩精品一区二区三区swag| 天天操天天干天天玩| 欧美黄色性生活| 中文精品无码中文字幕无码专区| 超碰超碰超碰超碰| 精国产品一区二区三区a片| 一级 黄 色 片一| 岛国av一区| 国产原创在线播放| 欧美成人777| 动漫av在线免费观看| 天天摸日日操| 樱空桃在线播放| 日韩精品在线视频免费观看| 国产精品人人做人人爽人人添| 日韩欧美综合| www.99re7.com| 一级片在线免费看| www.久久.com| 一个人www视频在线免费观看| 向日葵视频成人app网址| 久久久久成人精品无码| 日韩在线视频线视频免费网站| 337p粉嫩大胆色噜噜噜噜亚洲| 国产精品亚洲欧美一级在线| 久久噜噜色综合一区二区| 国产精品第12页| 亚洲一区二区三区在线免费| 欧美两根一起进3p做受视频| 色先锋av影音| 看高清中日韩色视频| 免费成人av在线播放| 日美av在线| 久久久久久少妇| 免费看男男www网站入口在线| 精品成人久久av| www天堂网| 免费观看成年人视频在线观看| 日本免费网站在线观看| 国产亚洲精品美女久久久久| 欧美激情亚洲综合一区| 国产黄色免费视频| 一区二区三区中文在线| 亚洲第一综合| 亚洲视屏在线观看| 粉嫩在线一区二区三区视频| 在线观看日韩精品| 欧美一级片网址| 免费大秀视频在线播放| 日韩久久久久久久| 中文字幕av在线播放| 苍井空张开腿实干12次| 亚洲国产第一页| 精品国产丝袜高跟鞋| 国产精欧美一区二区三区| 四季av一区二区三区免费观看| 日本精品久久| 粉嫩av一区二区| 天堂在线视频免费| 国产传媒一区二区三区| xxxx18国产| 久久99国内精品| 国产精品扒开腿爽爽爽视频| 99在线国产| 国产剧情久久久| 精品毛片一区二区三区| xxxxbbbb欧美| 综合激情一区| 国产又爽又黄网站亚洲视频123| 久久久999国产精品| av福利导福航大全在线播放| 国产日韩欧美一区二区三区四区| 天堂8中文在线| 亚洲久久久久| 在线不卡免费视频| 高h放荡受浪受bl| 欧美高清一区| gogo久久日韩裸体艺术| 视频一区二区三区四区五区| 成人亚洲视频在线观看| 亚洲精品影院在线| 日韩有码免费视频| 久久品道一品道久久精品|