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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

STL算法find,find_if,find_if_not,sort,fill,for_each,count,adjacent_find,random_shuffle,prev_permutation

發(fā)布時(shí)間:2024/9/27 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STL算法find,find_if,find_if_not,sort,fill,for_each,count,adjacent_find,random_shuffle,prev_permutation 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.


1find查找

#include<iostream>

#include<vector>

#include<algorithm>

#include<list>

#include<set>

#include<string>

?

usingnamespacestd;

?

voidmain()

{

???vector<int>myv;

???myv.push_back(1);

???myv.push_back(2);

???myv.push_back(3);

???myv.push_back(11);

???myv.push_back(22);

???myv.push_back(33);

???for_each(myv.begin(),myv.end(), [](intv){cout <<v <<endl; });

???auto?i =find(myv.begin(),myv.end(), 23);

?

???//說明已經(jīng)到了最后面

???if (i == myv.end())

???{

???????std::cout << "23玩失蹤";

???}

???else

???{

???????//如果找到了則輸出結(jié)果

???????std::cout << *i;

???}

???cin.get();

}

運(yùn)行結(jié)果:

2find_if,find_if_not

#include<iostream>

#include<vector>

#include<algorithm>

#include<list>

#include<set>

#include<string>

?

usingnamespacestd;

?

voidmain()

{

???vector<int>myv;

???myv.push_back(1);

???myv.push_back(2);

???myv.push_back(3);

???myv.push_back(11);

???myv.push_back(22);

???myv.push_back(33);

???for_each(myv.begin(),myv.end(), [](intv){cout <<v <<endl; });

?

???std::cout << "-------" <<std::endl;

?

???//找到第一個(gè)比11大的值

???autoii =find_if(myv.begin(),myv.end(), [](intv)->bool{return (v > 11); });

???//找到第一個(gè)不比4大的值

???auto?i =find_if_not(myv.begin(),myv.end(), [](intv)->bool{return (v > 4); });

?

???if (ii == myv.end())

???{

???????std::cout << "沒找到" << endl;

???}

???else

???{

???????std::cout << *ii <<endl;

???}

?

???std::cout << "-------" <<std::endl;

?

???if (i == myv.end())

???{

???????std::cout << "玩失蹤";

???}

???else

???{

???????std::cout << *i;

???}

???cin.get();

}

運(yùn)行結(jié)果是:

3sort,fill,for_each

#include<iostream>

#include<vector>

#include<algorithm>

#include<list>

#include<set>

#include<string>

?

usingnamespacestd;

template <classT>

classshow

{

public:

???void operator()(T &t)

???{

???????cout <<t <<"?";

???}

};

?

voidmain()

{

???list<int>list1;

???vector<int>v1;

???list1.push_back(121);

???list1.push_back(12);

???list1.push_back(122);

???list1.push_back(23);

?

???v1.push_back(121);

???v1.push_back(12);

???v1.push_back(122);

???v1.push_back(17);

???v1.push_back(23);

?

???//list不能通過sort進(jìn)行排序,如果放開這一句將出現(xiàn)錯(cuò)誤

???//sort(list1.begin(), list1.end());

???//排序,簡(jiǎn)單的排序

???sort(v1.begin(),v1.end());

?

???//算法依賴于數(shù)據(jù)結(jié)構(gòu)(鏈?zhǔn)?#xff0c;線性),不同的數(shù)據(jù)結(jié)構(gòu),算法不一樣

???//填充,指定位置數(shù)據(jù)進(jìn)行初始化,begin()+2到最后的數(shù)值填充為3

???fill(v1.begin() + 3, v1.end(), 3);

?

???for_each(list1.begin(),list1.end(),show<int>());

???cout <<"\n";

???for_each(v1.begin(),v1.end(),show<int>());

?

???cin.get();

}

運(yùn)行結(jié)果:

4.count,統(tǒng)計(jì)某個(gè)節(jié)點(diǎn)值相同的元素有多少個(gè)

#include<iostream>

#include<vector>

#include<algorithm>

#include<list>

#include<set>

#include<string>

?

usingnamespacestd;

?

voidmain()

{

???multiset<int > myset;

???myset.insert(3);

???myset.insert(1);

???myset.insert(2);

???myset.insert(1);

???myset.insert(2);

???myset.insert(1);

???myset.insert(2);

???myset.insert(1);

???myset.insert(1);

???myset.insert(1);

?

???cout <<"統(tǒng)計(jì)總共的節(jié)點(diǎn)" << endl;

???inti = 0;

???for (autoib =myset.begin(),ie =myset.end();ib !=ie;ib++,i++)

???{}

???cout <<i <<endl;

???

???//統(tǒng)計(jì)有多少個(gè)節(jié)點(diǎn)1

???cout <<"統(tǒng)計(jì)值為1的節(jié)點(diǎn)個(gè)數(shù)有多少個(gè)" << endl;

???intnum =count(myset.begin(),myset.end(), 1);

???cout <<num <<endl;

?

???cin.get();

}

運(yùn)行結(jié)果:

5. adjacent_find,依次打印出結(jié)果:

#include<iostream>

#include<vector>

#include<algorithm>

#include<list>

#include<set>

#include<string>

?

usingnamespacestd;

?

template <classT>

classshow

{

public:

???void??operator ()(T &t)

???{

???????cout <<t <<"?";

???}

?

};

?

voidmain()

{

???multiset<int > myset;

???myset.insert(3);

???myset.insert(1);

???myset.insert(2);

???myset.insert(1);

???myset.insert(2);

???myset.insert(1);

???myset.insert(2);

?

???for_each(myset.begin(),myset.end(),show<constint>());

???//通過這種方式一個(gè)個(gè)的打印出結(jié)果

???autoit =adjacent_find(myset.begin(),myset.end());

???cout <<"\n" << *it <<endl;

???it++;

???cout <<"\n" << *it <<endl;

???it++;

???cout <<"\n" << *it <<endl;

???it++;

???cout <<"\n" << *it <<endl;

???//查找相同的數(shù)據(jù),可以自己確定位置

???it =adjacent_find(it,myset.end());

?

???cout <<"\n" << *it <<endl;

???it++;

???cout <<"\n" << *it <<endl;

???it++;

???cout <<"\n" << *it <<endl;

???it++;

???cout <<"\n" << *it <<endl;

???

???cin.get();

}

運(yùn)行結(jié)果:

6. random_shuffle實(shí)現(xiàn)隨機(jī)排序

#include<iostream>

#include<vector>

#include<algorithm>

#include<list>

#include<set>

#include<string>

?

usingnamespacestd;

?

template <classT>

classshow

{

public:

???void??operator ()(T &t)

???{

???????cout <<t <<"?";

???}

?

};

?

voidmain()

{

???vector<int>v1;

???for (inti = 0;i < 10;i++)

???{

???????v1.push_back(i);

???}

???for_each(v1.begin(),v1.end(),show<int>());

???cout <<"\n";

???//通過random_shuffle的方式實(shí)現(xiàn)隨機(jī)排序vector

???random_shuffle(v1.begin(),v1.end());

???for_each(v1.begin(),v1.end(),show<int>());

???cout <<"\n";

???random_shuffle(v1.begin(),v1.end());

???for_each(v1.begin(),v1.end(),show<int>());

???cout <<"\n";

???random_shuffle(v1.begin(),v1.end());

???for_each(v1.begin(),v1.end(),show<int>());

???

???cin.get();

}

運(yùn)行結(jié)果:

用途:隨機(jī)洗牌

7. partition分區(qū)

#include<iostream>

#include<vector>

#include<algorithm>

?

usingnamespacestd;

?

template <classT>

classshow

{

public:

???void??operator ()(T &t)

???{

???????cout <<t <<"?";

???}

};

?

boolisok(intnum)

{

???return (num >= 10);

}

?

voidmain()

{

???vector<int>v1;

???v1.push_back(20);

???v1.push_back(23);

???v1.push_back(6);

???v1.push_back(27);

???v1.push_back(5);

???v1.push_back(67);

???v1.push_back(10);

???v1.push_back(13);

???v1.push_back(14);

???v1.push_back(3);

?

???for_each(v1.begin(),v1.end(),show<int>());

???//服務(wù)于快速排序的分區(qū)

???partition(v1.begin(),v1.end(),isok);

???

???cout <<"\n";

?

???cout <<endl;

???for_each(v1.begin(),v1.end(),show<int>());

?

???cin.get();

}

運(yùn)行結(jié)果:

分析,本質(zhì):

8. prev_permutation查看排序過程

#include<iostream>

#include<vector>

#include<algorithm>

?

usingnamespacestd;

?

voidmain()

{

???inta[4] = { 2, 1, 3, 10 };

???do

???{

???????cout <<a[0] <<" " <<a[1] <<" " <<a[2] <<" " <<a[3] <<"\n";

???????//通過下面這個(gè)代碼查看排序過程

???} while (prev_permutation(a,a+4));

???cin.get();

}

運(yùn)行結(jié)果:

9.sort排序

#include<iostream>

#include<vector>

#include<algorithm>

?

usingnamespacestd;

?

template <classT>

classshow

{

public:

???void??operator ()(T &t)

???{

???????cout <<t <<"?";

???}

};

?

voidmain()

{

???vector<char>myvector;

???myvector.push_back('B');

???myvector.push_back('A');

???myvector.push_back('C');

???myvector.push_back('Y');

???myvector.push_back('Z');

???myvector.push_back('X');

???for_each(myvector.begin(),myvector.end(),show<char>());

???//sort(one.begin(), one.begin() + 3);

???sort(myvector.begin(),myvector.begin() + 3);

???cout <<"\n";

???for_each(myvector.begin(),myvector.end(),show<char>());

?

???cin.get();

}

運(yùn)行結(jié)果:

10. partial_sort部分排序

#include<iostream>

#include<vector>

#include<algorithm>

#include<list>

#include<set>

#include<string>

?

usingnamespacestd;

classstudent

{

public:

???stringname;

???intscore;

?

public:

???student(stringstr,intnum) :name(str),score(num)

???{

???}

???bool operator <(conststudent &s1)const

???{

???????returnthis->score < s1.score;

???}

};

?

intmain()

{

???vector<student>ss;

???{

???????students1("totoA", 106);

???????ss.push_back(s1);

???}

???{

???????students1("totoB", 101);

???????ss.push_back(s1);

???}

???{

???????students1("totoC", 103);

???????ss.push_back(s1);

???}

???{

???????students1("totoD", 105);

???????ss.push_back(s1);

???}

???{

???????students1("totoE", 67);

???????ss.push_back(s1);

???}

???{

???????students1("totoF", 58);

???????ss.push_back(s1);

???}

???{

???????students1("totoG", 111);

???????ss.push_back(s1);

???}

???//部分排序

???partial_sort(ss.begin(),ss.begin() + 4, ss.end());//部分排序

?

???for (inti = 0;i < 7;i++)

???{

???????std::cout << ss[i].name << ss[i].score << "\n";

???}

???cin.get();

}

運(yùn)行結(jié)果:

總結(jié)

以上是生活随笔為你收集整理的STL算法find,find_if,find_if_not,sort,fill,for_each,count,adjacent_find,random_shuffle,prev_permutation的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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