STL方面的笔记
以下为vector queue map set stack的基本用法
可编译结合注释查看
1 #include <vector> 2 #include <iostream> 3 #include <queue> 4 #include <map> 5 #include <set> 6 #include <stack> 7 using namespace std; 8 9 #define REP(n) for(int o=0;o<n;o++) 10 11 int main(){ 12 13 cout<<"vector功能"<<endl; 14 vector<int> vec;//声明名称为vec的整数型向量 15 vector<int>::iterator it_vec;//迭代器 16 vec.clear();//清空 17 cout<<"插入数据"<<endl; 18 vec.push_back(1);//在末尾插入 19 vec.push_back(3); 20 it_vec=vec.end();//指向vec的末尾 21 it_vec--;//向前移动一位(既1和3的中间) 22 vec.insert(it_vec,2);//在此处插入2 23 REP(vec.size())cout<<vec[o]<<endl;//访问数据 24 cout<<"清除第一个数据后输出"<<endl; 25 vec.erase(vec.begin()); 26 it_vec=vec.begin(); 27 REP(vec.size()){ 28 cout<<*it_vec<<endl;//访问数据 29 it_vec++;//向后一位 30 } 31 cout<<"#####################################"<<endl<<endl; 32 33 34 cout<<"map功能"<<endl; 35 map<string,vector<int> > m;//声明 key的类型为string value类型为int型vector 的 映射m 36 map<string,vector<int> >::iterator it_map;//迭代器 37 cout<<"插入数据"<<endl; 38 m.insert(pair<string,vector<int> >("aaa",vec)); 39 it_map=m.find("aaa");//或者指定key的位置(迭代器) 40 cout<<"key:"<<it_map->first<<endl; 41 cout<<"value:"<<endl; 42 REP(vec.size())cout<<" "<<vec[o]<<endl; 43 cout<<"查找一个不存在的数据 find()会返回map的末尾"<<endl; 44 it_map=m.find("Niconiconi~"); 45 if(it_map==m.end())cout<<"No Niconiconi~"<<endl; 46 cout<<"#####################################"<<endl<<endl; 47 48 cout<<"set功能"<<endl; 49 set<int> s;//声明一个整数型集合 50 set<int>::iterator it_set;//迭代器 51 cout<<"倒叙插入数据并且有重复的4"<<endl; 52 s.insert(5); 53 s.insert(4); 54 s.insert(4); 55 s.insert(2); 56 s.insert(1); 57 it_set=s.begin(); 58 while(it_set!=s.end()){ 59 cout<<*it_set<<endl; 60 it_set++; 61 } 62 cout<<"输出时4自动保留一个,并且数据由小到大输出"<<endl; 63 cout<<"#####################################"<<endl<<endl; 64 65 66 67 cout<<"queue功能"<<endl; 68 queue<string> q;//声明一个字符串型队列 q 69 cout<<"按顺序插入"<<endl; 70 q.push("L"); 71 q.push("O"); 72 q.push("V"); 73 q.push("E"); 74 q.push("L"); 75 q.push("I"); 76 q.push("V"); 77 q.push("E"); 78 q.push("!"); 79 while(!q.empty()){ 80 cout<<q.front(); 81 q.pop(); 82 } 83 cout<<endl; 84 cout<<"先入队的先出来"<<endl; 85 cout<<"#################################"<<endl<<endl; 86 87 88 89 cout<<"priority_queue功能"<<endl; 90 priority_queue<string> pq;//声明priority_queue一个字符串型优先队列 91 cout<<"乱序插入具有可比较大小的数据"<<endl; 92 pq.push("B"); 93 pq.push("A"); 94 pq.push("C"); 95 while(!pq.empty()){ 96 cout<<pq.top(); 97 pq.pop(); 98 } 99 cout<<endl; 100 cout<<"权值大的先出来"<<endl; 101 cout<<"###############################"<<endl<<endl; 102 103 cout<<"stack功能"<<endl; 104 stack<string> sta;//声明一个字符串类型的栈 105 cout<<"倒序插入数据"<<endl; 106 sta.push("+"); 107 sta.push("+"); 108 sta.push("C"); 109 while(!sta.empty()){ 110 cout<<sta.top(); 111 sta.pop(); 112 } 113 cout<<endl; 114 cout<<"先进入的后出来"<<endl; 115 return 0; 116 }
编译结果:
vector功能
插入数据
1
2
3
清除第一个数据后输出
2
3#
map功能
插入数据
key:aaa
value:
2
3
查找一个不存在的数据 find()会返回map的末尾
No Niconiconi~#
set功能
倒叙插入数据并且有重复的4
1
2
4
5
输出时4自动保留一个,并且数据由小到大输出#
queue功能
按顺序插入
LOVELIVE!
先入队的先出来#
priority_queue功能
乱序插入具有可比较大小的数据
CBA
权值大的先出来#
stack功能
倒序插入数据
C++
先进入的后出来