/* set:二叉搜索树维护集合的容器 map:维护键和键对应的值的容器 */ #include<iostream> #include<set> #include<map> #include<string> using namespace std; int main() { set<int> s; s.insert(1); s.insert(5); s.insert(3); set<int>::iterator ite; ite = s.find(1); if (ite == s.end())cout << "not found"; else cout << "found"; //删除元素 s.erase(1); //其它查找方式 if (s.count(3) != 0)cout << "found"; else cout << "not found"; //遍历 for (ite = s.begin(); ite != s.end(); ite++) cout << *ite << " "; map<int, const char*> m; m.insert(make_pair(1, "one")); m.insert(make_pair(10, "ten")); m[100] = "hundred"; map<int, const char*>::iterator ite2; ite2 = m.find(1);//查找 cout << ite2->second << endl; ite2 = m.find(2); if (ite2 == m.end())cout << "not found"; else cout << ite2->second; cout << m[10];//其它写法 m.erase(10);//删除 //遍历 for (ite2 = m.begin(); ite2 != m.end(); ite2++) cout << ite2->first << " " << ite2->second << endl; system("pause"); return 0; }
/* set 结构体排序用法 实例:用set查找人名 strcpy(a,"name"):赋给字符串a值“name” strcmp(a,b):a>b=1,a<b=-1,a==b=0 */ #include<iostream> #include<cstdio> #include<set> #include<cstring> using namespace std; struct student{ char name[10]; int stunum; }; //set 排序的规则 class cmpp { public: bool operator()(const student &a, const student &b) const{ if(strcmp(a.name,b.name)<0)return true; else if(strcmp(a.name,b.name)==0)return a.stunum<b.stunum; else return false; } }; int main() { student a,b; strcpy(a.name,"赵钱"); a.stunum=1; strcpy(b.name,"孙李"); b.stunum=9; set<student,cmpp> s; s.insert(a); s.insert(b); set<student,cmpp>::iterator iter; for(iter=s.begin();iter!=s.end();iter++)cout<<(*iter).stunum<<endl; //查找 iter=s.find(b); //iter若不等于s.end(),说明查找到目标(iter!=s.end()非常重要) if(iter!=s.end()){cout<<"name:";puts((*iter).name);cout<<endl;} else cout<<"not find "; return 0; }