1、set的基本操作
成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站建設(shè)、網(wǎng)站制作、左權(quán)網(wǎng)絡(luò)推廣、小程序開發(fā)、左權(quán)網(wǎng)絡(luò)營(yíng)銷、左權(quán)企業(yè)策劃、左權(quán)品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供左權(quán)建站搭建服務(wù),24小時(shí)服務(wù)熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com
(1)、set的刪除、插入操作
代碼如下:
#include#include using namespace std; //set底層是紅黑樹,其所包含的元素是唯一的,集合中的元素按一定的順序排列,元素插入過(guò)程是按排序規(guī)則插入,所> 以不能指定插入位置; int main(void){ //set 集合 元素唯一 自動(dòng)排序(默認(rèn)情況下是從小到大) 不能按照[]方式插入元素 底層紅黑樹 set set1; for(int i = 0; i < 5; i++){ set1.insert(34); set1.insert(24); set1.insert(14); set1.insert(84); set1.insert(-4); } //插入重復(fù)的元素 set1.insert(100); set1.insert(100); set1.insert(100); set1.insert(100); set ::iterator it; for(it = set1.begin(); it != set1.end(); it++){ cout<<*it<<" "; } cout< ::iterator it = set1.begin(); cout<<*it<<" "; set1.erase(set1.begin()); } cout< (2)、set的排序
代碼如下:
#include#include using namespace std; //對(duì)于基礎(chǔ)數(shù)據(jù)可以進(jìn)行排序,復(fù)雜數(shù)據(jù)類型的排序是怎么回事?------>仿函數(shù)解決 int main(void){ set set1; //默認(rèn)排序從小到大 set > set2; //集合是從小到大 set > set3; //集合從大到小的輸出; for(int i = 0; i < 5; i++){ set3.insert(11); set3.insert(45); set3.insert(99); set3.insert(77); set3.insert(66); } //從大到小的排序 set >::iterator it; for(it = set3.begin(); it != set3.end(); it++){ cout<<*it<<" "; } cout< (3)、set中為復(fù)雜數(shù)據(jù)類型時(shí)的排序
代碼如下:
#include#include #include using namespace std; class Student{ public: Student(const char *name, int age){ strcpy(this->name, name); this->age = age; } public: char name[32]; int age; }; //仿函數(shù):重載了(), struct FunStudent{ bool operator()(const Student &left, const Student &right){ if(left.age < right.age){ //左邊的小,就返回為真!!從小到大進(jìn)行排序 return true; }else{ return false; } } }; int main(void){ /* Student s1("s1", 31); Student s2("s2", 22); Student s3("s3", 55); Student s4("s4", 11); Student s5("s5", 31); //如果2個(gè)31歲,能插入成功嗎? //如何知道插入的結(jié)果,看函數(shù)的返回值 set set1; //集合中插入的是學(xué)生類型(復(fù)雜數(shù)據(jù)類型),會(huì)調(diào)用這個(gè)仿函數(shù) set1.insert(s1); set1.insert(s2); set1.insert(s3); set1.insert(s4); set1.insert(s5); set ::iterator it; for(it = set1.begin(); it != set1.end(); it++){ cout< age<<" "< name< set1; //集合中插入的是學(xué)生類型(復(fù)雜數(shù)據(jù)類型),會(huì)調(diào)用這個(gè)仿函數(shù) pair ::iterator, bool> pair1 = set1.insert(s1); if(pair1.second == true){ //insert()的返回值是pair(對(duì)組)類型; cout<<"插入s1成功"< ::iterator, bool> pair5 = set1.insert(s5); if(pair5.second == true){ cout<<"插入s1成功"< ::iterator it; for(it = set1.begin(); it != set1.end(); it++){ cout< age<<" "< name< (4)、set中迭代器的使用
代碼如下:
#include#include #include using namespace std; //返回值為pair的類型要學(xué)會(huì)使用; int main(void){ set set1; for(int i = 0; i < 10; i++){ set1.insert(i+1); } set ::iterator it; for(it = set1.begin(); it != set1.end(); it++){ cout<<*it<<" "; } cout< ::iterator it0 = set1.find(5); cout<<"it0:"<<*it0< ::iterator it1 = set1.lower_bound(5); //大于等于5的元素的迭代器的位置 cout<<"it1:"<<*it1< ::iterator, set ::iterator> mypair = set1.equal_range(5); //函數(shù)的返回值為對(duì)組 cout<<*mypair.first< 2、multiset的基本操作
代碼如下:
#include#include using namespace std; int main(void){ multiset set1; int tmp = 0; cout<<"請(qǐng)輸入multiset集合中的值:"; cin>>tmp; while(tmp != 0){ set1.insert(tmp); cout<<"請(qǐng)輸入multiset集合中的值:"; cin>>tmp; } multiset ::iterator it; for(it = set1.begin(); it != set1.end(); it++){ cout<<*it<<" "; } cout< ::iterator it = set1.begin(); cout<<*it<<" "; set1.erase(it); } cout< 3、map的基本操作
(1)、map元素的添加、遍歷、刪除
代碼如下:
#include#include #include