set的基本操作

#include <set>
#include <iostream>
#include <string>
using namespace std;

//元素不是結構體,自定義比較函數如下:
//struct comp
//{
// bool operator()(const int &a,const int &b){
//  return a > b;
// }
//};

//集合內元素是結構體,可以將比較函數寫在結構體內:
struct info
{
 string name;
 float score;
 bool operator < (const info &a) const{
  return a.score < score;
 }
};

int main(int argc,int **argv){

//集合的創建和集合的擴展
 //set<int,comp> s;
 //s.insert(8);
 //s.insert(1);
 //s.insert(12);
 //s.insert(6);
 //s.insert(8);

 set<info> s;
 info information;

 information.name = "張洪豪";
 information.score = 80.5;
 s.insert(information);

 information.name = "陳紅";
 information.score = 90.5;
 s.insert(information);

 information.name = "何林林";
 information.score = 95;
    s.insert(information);

    //對集合的遍歷!
 //set<int>::iterator iter ;
 //for (iter= s.begin();iter != s.end();++iter)
 // cout<<*iter<<" ";
 //cout<<endl;

//對集合元素的反向遍歷!
 //set<int>::reverse_iterator iter1;
 //for (iter1 = s.rbegin();iter1 != s.rend();++iter1)
 // cout<<*iter1<<" ";
 //cout<<endl;

//對集合的刪除
 //set<int>::iterator iter ;
    //s.erase(6);
 //for (iter= s.begin();iter != s.end();++iter)
 // cout<<*iter<<" ";
 //cout<<endl;
 //s.clear();
 //cout<<s.size()<<endl;

//集合元素的查找
 //set<int>::iterator it ;
 //it = s.find(6);
 //if(it!=s.end())
 // cout<<*it<<endl;
 //else
 // cout<<"can not find !"<<endl;
 //it = s.find(20);
 //if(it!=s.end())
 // cout<<*it<<endl;
 //else
 // cout<<"can not find !"<<endl;

 //set<int,comp>::iterator iter;
 set<info>::iterator iter;
 for (iter = s.begin();iter!=s.end();++iter)
  cout<<(*iter).name<<" : "<<(*iter).score<<endl;
 cout<<endl;
    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章