您的位置:首页 > 编程语言 > C语言/C++

c++STL基本使用

2016-04-30 21:16 369 查看
1.priority_queue | map | multimap | set | sort 基本使用

#include<iostream>
#include<queue>
#include<algorithm>
#include<vector>

#include<set>
#include<map>
using namespace std;
struct Node{

string msg;
int cmpKey;
Node(){}
Node(string _msg,int _cmpKey):msg(_msg),cmpKey(_cmpKey){}
bool operator <(const Node&b)const{
return cmpKey > b.cmpKey;
}

};
bool cmpForVectorSort(const Node &a,const Node &b){
return a.cmpKey<b.cmpKey;
}

int main()
{
/**
1.priority_queue 使用
*/
priority_queue<Node> q;
q.push(Node("c",3));
q.push(Node("a",1));
q.push(Node("z",26));
while(!q.empty()){
Node cur = q.top();
q.pop();
cout<<cur.msg<<endl;
}

/**
2.vector,sort 使用
*/
vector<Node> testVector;
testVector.push_back(Node("c",3));
testVector.push_back(Node("a",1));
testVector.push_back(Node("z",26));

vector<Node>::const_iterator iter = testVector.begin();
cout<<"before sort ----------------"<<endl;
for(;iter != testVector.end();iter++){
cout<<(*iter).msg << " ";
}
cout<<endl;
sort(testVector.begin(),testVector.end(),cmpForVectorSort);
iter = testVector.begin();
cout<<"after sort ----------------"<<endl;
for(;iter != testVector.end();iter++){
cout<<(*iter).msg << " ";
}
cout<<endl;

/**
3.map 使用
*/
map<int,Node> m;
m.insert(pair<int,Node>(33,Node("c",3)));
m.insert(pair<int,Node>(33,Node("c",3)));
m.insert(pair<int,Node>(11,Node("a",1)));
m.insert(pair<int,Node>(2626,Node("z",26)));
////以下方式,必须提供Node的默认构造函数:Node(){}
//    m[33] = Node("c",3);
//    m[11] = Node("c",3);
//    m[2626] = Node("c",3);
//查找元素
cout<<"if exits 33 : "<<(m.find(33) != m.end())<<endl;
cout<<"if exits 333 : "<<(m.find(333) != m.end())<<endl;
cout<<"map ----------------------------"<<endl;
map<int,Node>::const_iterator iter2 = m.begin();
for(;iter2 != m.end();iter2++){
cout<<(iter2->second).msg<<" ";
}
cout<<endl;
/**
4.multimap 使用
*/
cout<<"multimap ----------------------------"<<endl;
multimap<int,Node> mm ;
mm.insert(pair<int,Node>(33,Node("c",3)));
mm.insert(pair<int,Node>(33,Node("c",3)));
multimap<int,Node>::const_iterator iter3 = mm.begin();
for(;iter3 != mm.end();iter3++){
cout<<(iter3->second).msg<<" ";
}
cout<<endl;
/**
5.set 使用
*/
set<Node> s;
s.insert(Node("c",3));
s.insert(Node("a",1));
s.insert(Node("z",26));
cout<<"set ----------------------------"<<endl;
set<Node>::const_iterator iterForSet = s.begin();
for(;iterForSet != s.end();iterForSet++){
cout<<(*iter).msg <<" ";
}
cout<<endl;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: