#include <iostream> #include <set> using namespace std; int main() { //set<类型> 名; set<int> s; //输入n,输入n个数字,输出:去重后从小到大的数据 int n; cin>>n; int a; for(int i=0;i<n;i++){ cin>>a; s.insert(a); } //集合没有下标用法,遍历输出需要用【迭代器】 for(set<int>::iterator i=s.begin();i!=s.end();i++){ //创建一个set<int>类型的迭代器指针iterator,指针变量名为i,初始时指向集合的开头 //指针只要没指向set的结尾,就进行循环 cout<< *i <<" ";//输出i指针指向的数据 //i++表示当前指针的下一个位置 } cout<<endl; //auto 自动识别类型 for(auto i=s.begin();i!=s.end();i++){ cout<<*i<<" "; } cout<<endl; for(int i=0;i<100;i++){ s.insert(i); } //find() 查找函数(值) auto j=s.find(5);//存在返回指向的元素地址,不存在返回s.end() if(j==s.end()) cout<<0; else cout<<*j; //erase() 删除函数(地址或地址区间) cout<<endl; for(auto i=s.begin();i!=s.end();i++){ cout<<*i<<" "; } cout<<endl; s.erase(s.begin());//删除开头 auto i=s.find(5); auto k=s.find(90); s.erase(i,k);//从i删到k的位置 cout<<endl; for(auto i=s.begin();i!=s.end();i++){ cout<<*i<<" "; } cout<<endl; //clear() 清空函数 s.clear();//全部清空 for(int i=0;i<100;i++){ s.insert(i); } //count() 统计函数(值) cout<<s.count(5);//返回集合中有多少个5 //front() 首元素 //cout<<s.front();//输出集合中的第一个元素 //back() 最后一个元素 //cout<<s.back();//输出最后一个元素 //size() 元素个数 cout<<s.size();//输出集合中的元素个数 return 0; } /* 类型: <string> 字符串,有字符数组和单一类型的能力 结构: <stack> 栈,先进后出,后进先出 <queue> 队列,先进先出,后进后出 <vector> 向量(可变数组),有数组的用法,且长度可变 <set> 集合,去重,自动有序 multiset 可重复集合,自动有序,其他的用法与set一样 <map> 映射,去重,自动有序,通过key判定重复和排序【键值对】 multimap 可重复映射,自动有序,无法用下标,其他与map一样 */ #include <map> //map<key类型,value类型> 名; map<int,string> m; int n,id; string name; cin>>n; for(int i=0;i<n;i++){ cin>>id>>name;//输入保存 m[id]=name;//以键作为下标 } m[9999999]="heihei";//直接存数据 m[9999999]="eg";//覆盖数据 cout<<m[3000];//不报错 8,haha m.insert(map<int,string>::value_type({8,"haha"})); m.insert(map<int,string>::value_type({8,"egeg"}));//已存,不能正常插入,不报错 for(map<int,string>::iterator i=m.begin();i!=m.end();i++){ //cout<<*i<<" ";//报错 cout<<i->first<<" "<<i->second<<" "; //第一个是键,第二个是值 } m.size(); m.clear(); 关联容器:集合+映射 (责任编辑:admin) |