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

歡迎訪問(wèn) 生活随笔!

生活随笔

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

编程问答

STL14-set/multiset容器

發(fā)布時(shí)間:2025/3/15 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STL14-set/multiset容器 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

set只有一個(gè)方法就是insert

?

#include<iostream> #include<set> //set和multiset是一個(gè)頭文件 //set內(nèi)部實(shí)現(xiàn)機(jī)制 紅黑色(平衡二叉樹(shù)的一種) //關(guān)聯(lián)式容器 //set不允許有重復(fù)元素 //multiset運(yùn)行有重復(fù)元素 //容器查找效率高 //容器根據(jù)元素的值自動(dòng)對(duì)元素排序 默認(rèn)從小到大 using namespace std;//仿函數(shù) class mycompare { public:bool operator()(int v1, int v2) {return v1 > v2;} }; void PrintSet(set<int> s1) {for (set<int>::iterator it = s1.begin(); it != s1.end(); it++){cout << *it << " ";}cout << endl; }//set初始化 void test01() {mycompare com;com(10, 20); //仿函數(shù)set<int> s1;s1.insert(5);s1.insert(2);s1.insert(8);s1.insert(1);for (set<int>::iterator it = s1.begin(); it != s1.end(); it++){cout << *it << " ";}//拷貝構(gòu)造set<int> s2(s1);PrintSet(s2);//賦值set<int> s3;s3 = s1;//刪除操作s1.erase(s1.begin());cout << "刪除s1.begin()" << endl;PrintSet(s1);s1.erase(8);cout << "刪除8" << endl;PrintSet(s1);//如何改變默認(rèn)排序?//先序遍歷 中序遍歷 后序遍歷 }//set查找 void test02() {//實(shí)值set<int> s1;s1.insert(5);s1.insert(2);s1.insert(8);s1.insert(1);PrintSet(s1);set<int>::iterator ret = s1.find(8);cout << "find 8" << endl;if (ret == s1.end()) {cout << "沒(méi)有找到" << endl;}else {cout << "ret:"<<*ret << endl;}//lower_bound:找第一個(gè)大于等于指定值的元素 返回為迭代器cout << "lower_bound(大于等于) 4" << endl;set<int>::iterator ret1 = s1.lower_bound(4); if (ret1 == s1.end()) {cout << "沒(méi)有找到" << endl;}else {cout << "ret1:" << *ret1 << endl;}//upper_bound:找第一個(gè)大于指定值的元素 返回為迭代器cout << "upper_bound(大于) 2" << endl;set<int>::iterator ret2 = s1.upper_bound(2);if (ret2 == s1.end()) {cout << "沒(méi)有找到" << endl;}else {cout << "ret2:" << *ret2 << endl;}//equal_range 返回lower_bound 和 upper_bound值/*set<int>::iterator e1;set<int>::iterator e2;pair<e1, e2>=s1.equal_range(5); 錯(cuò)誤做法*/cout << "equal_range:返回lower_bound 和 upper_bound值 5" << endl;pair<set<int>::iterator, set<int>::iterator> myret= s1.equal_range(5);myret.first;myret.second;if (myret.first == s1.end()) {cout << "沒(méi)有找到" << endl;}else {cout << "找到了" <<*myret.first<< endl;}if (myret.second == s1.end()) {cout << "沒(méi)有找到" << endl;}else {cout << "找到了" << *myret.second << endl;}}class Person { public:int id;int age; public:Person(int Age,int Id):age(Age),id(Id){} }; class mycompare2 { public:bool operator() (Person p1, Person p2) const{return p1.age > p2.age; //用什么排序 把什么作為key關(guān)鍵字} }; void test03() {//set<Person> sp;//Person p1(20, 10), p2(30, 30), p3(34, 12);//sp.insert(p1);//sp.insert(p2);//sp.insert(p3); //無(wú)法對(duì)p1,p2,p3進(jìn)行排序 所以運(yùn)行報(bào)錯(cuò)set<Person,mycompare2> sp;Person p1(20, 10), p2(30, 30), p3(34, 12);Person p4(20, 10);sp.insert(p1);sp.insert(p2);sp.insert(p3); //無(wú)法對(duì)p1,p2,p3進(jìn)行排序 所以運(yùn)行報(bào)錯(cuò)for (set<Person, mycompare2>::iterator it = sp.begin(); it != sp.end(); it++) {cout << (*it).age << " " << (*it).id << endl;}set<Person, mycompare2>::iterator ret = sp.find(p4);if (ret == sp.end()) {cout << "未找到" << endl;}else {cout << "Age:"<<(*ret).age << endl;} } int main(int) {cout << "test01" << endl;test01();cout << "test02" << endl;test02();cout << "test03" << endl;test03();return 0; }

?

#include<iostream> #include<string> using namespace std;//類(lèi)模板的實(shí)現(xiàn)需要指定類(lèi)型 //函數(shù)模板的實(shí)現(xiàn)不需要指定類(lèi)型 //類(lèi)模板:template<class T1,class T2> struct pair;void test01() {//第一種方法創(chuàng)建一個(gè)對(duì)組 構(gòu)造 方法pair<string, int> pair1(string("name"), 1);cout << pair1.first << endl;cout << pair1.second << endl;//第二種pair<string, int> pair2 = make_pair("name", 30);cout << pair2.first << endl;cout << pair2.second << endl;//pair= 賦值pair<string, int> pair3 = pair2;cout << pair3.first << endl;cout << pair3.second << endl; }int main() {test01();return 0; }

?

?

總結(jié)

以上是生活随笔為你收集整理的STL14-set/multiset容器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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