Skip to content

Instantly share code, notes, and snippets.

@domen111
Last active August 29, 2015 14:26
Show Gist options
  • Save domen111/b4e33291d1868e99d474 to your computer and use it in GitHub Desktop.
Save domen111/b4e33291d1868e99d474 to your computer and use it in GitHub Desktop.
STL
//sort, reverse
#include <algorithm>
#include <cstdio>
#include <vector>
using namespace std;
int cmp(int a,int b){
return a>b;//小於:由小而大 ,大於:由大而小
}
int main(int argc, char** argv) {
int arr[]={9,5,88,92,7,6,50,88,754,32,1,0};
sort(arr,arr+sizeof(arr)/sizeof(arr[0]),cmp);
//stable_sort(arr,arr+sizeof(arr)/sizeof(arr[0]),cmp);
//reverse(arr,arr+sizeof(arr)/sizeof(arr[0]));
for(int i=0;i<sizeof(arr)/sizeof(arr[0]);i++){
printf("%d,",arr[i]);
}
vector<int> vec={9,5,88,92,7,6,50,88,754,32,1,0};
sort(vec.begin(),vec.end());
}
//queue
#include <iostream>
#include <queue>
using namespace std;
int main(int argc, char** argv) {
queue<int> q;
q.push(111);
q.push(222);
q.push(333);
cout<<"q.front="<<q.front()<<",q.back="<<q.back()<<endl;
cout<<"length="<<q.size()<<endl;
while(!q.empty()){
cout<<q.front()<<",";
q.pop();
}
}
//stack
#include <iostream>
#include <stack>
using namespace std;
int main(int argc, char** argv) {
stack<int> s;
s.push(111);
s.push(222);
s.push(333);
cout<<"s.top="<<s.top()<<endl;
cout<<"length="<<s.size()<<endl;
while(!s.empty()){
cout<<s.top()<<",";
s.pop();
}
}
//priority_queue
#include <iostream>
#include <queue>
using namespace std;
class cp{
public:
bool operator()(int &a, int &b){
return a>b;//小於:由小而大 ,大於:由大而小 ,但取出(top())時是從最後面取出
}
};
//或用struct
/*struct cp{
bool operator()(int &a, int &b){
return a<b;
}
};*/
int main(int argc, char** argv) {
priority_queue<int> pq;
//priority_queue<int,vector<int>,cp> pq;//自訂順序
//priority_queue<int,vector<int>,greater<int> > pq;//由大到小
pq.push(555);
pq.push(222);
pq.push(333);
pq.push(22);
pq.push(2252);
pq.push(333);
cout<<"pq.top="<<pq.top()<<endl;
cout<<"length="<<pq.size()<<endl;
while(!pq.empty()){
cout<<pq.top()<<",";
pq.pop();
}
}
//map
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main(int argc, char** argv) {
map<string,int> m;
m.clear();//清除全部
m["b"]=22;
m["a"]=21;
m["c"]=33;
m.insert(make_pair("abb",99));
m.insert(pair<string,int>("bbb",56));
cout << m["abb"] << endl;
map<string,int>::iterator iter;
for(iter=m.begin();iter!=m.end();iter++){
cout << iter->first << ":" << iter->second << ", ";
}
cout<<endl;
cout<<(m.find("k")!=m.end())<<endl;//如果找不到傳回map.end()
cout<<m.count("k")<<endl;//找到傳回1,找不到傳回0
cout<< m.find("a")->second << endl;
cout<<m["k"]<<endl;//沒有k,傳回0
//移除
m.erase("b");
//或者
/*iter = m.find("b");
m.erase (iter);*/
cout<<m.empty()<<endl;
cout<<"length="<<m.size()<<endl;
}
//set
#include <iostream>
#include <set>
using namespace std;
int main(int argc, char** argv) {
set<int> s;
s.clear();
s.insert(123);
s.insert(456);
s.insert(99);
s.insert(4);
s.insert(999);
s.insert(999); //重複輸入沒用,用multiset才有用
cout<<s.empty()<<endl;
cout<<s.size()<<endl;
if(s.find(456) == s.end())
cout << "Not found " << endl;
else
cout << "Found 456" << endl;
cout<<s.erase(456)<<endl;//找到456傳回1,找不到傳回0
//s.erase(s.find(456));
set<int>::iterator iter;
for(iter=s.begin();iter!=s.end();iter++){
cout<<*iter<<", ";
}
cout<<endl;
}
//vector
#include <iostream>
#include <vector>
using namespace std;
int main(int argc, char** argv) {
vector<int> v;
v.clear();
v.push_back(11);
v.push_back(22);
v.push_back(22);
v.push_back(99);
v.push_back(11);
v.push_back(22);
v.insert(v.begin()+1,1);
v.pop_back();
vector<int>::iterator iter;
for(iter=v.begin();iter!=v.end();iter++){
cout << *iter << ", ";
}
cout<<endl;
//或
for(int i=0; i<v.size() ; i++){
cout << v[i] << ", ";
}
cout<<endl;
cout<<v.empty()<<endl;
v.reserve(50);//保留空間
cout<<v.size()<<endl;//6
cout<<v.capacity()<<endl;//50
v.resize(50,123);//小於原來大小,會刪掉多餘元素,大於原來大小會補123(如果沒寫就補0)
cout<<v.front()<<v.back()<<endl;//最前和最後一筆資料
v.erase(v.begin()+3);
v.erase(v.begin()+3,v.begin()+6);
}
//list
#include <iostream>
#include <list>
using namespace std;
bool cmp (int a, int b){
return a<b;
}
int main(int argc, char** argv) {
list<int> l;
l.clear();
l.push_back(11);
l.push_back(22);
l.push_back(22);
l.push_back(99);
l.push_back(11);
l.push_back(22);
l.push_front(88);
list<int>::iterator iter;
for(iter=l.begin();iter!=l.end();iter++){
cout << *iter << ", ";
}
cout<<endl;
l.sort();
//l.sort(cmp);
l.insert(++l.begin(),1);//不能用l.begin()+1
l.pop_back();
l.pop_front();
//cout<<l[3]<<endl; //不能用中括號讀取(會編譯錯誤)
cout<<l.empty()<<endl;
cout<<l.size()<<endl;
l.resize(50,123);//小於原來大小,會刪掉多餘元素,大於原來大小會補123(如果沒寫就補0)
cout<<l.front()<<l.back()<<endl;//最前和最後一筆資料
l.erase(++++++l.begin());
l.erase(++++l.begin(),----l.end());
l.remove(22);//移除value為22的元素
l.reverse();
l.unique();//移除連續重複
cout<<*(--l.end());//讀取最後一筆資料,end()讀到的是最後一筆資料的下一個位置
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment