C/C++解题常用STL大礼包 含vector,map,set,queue(含优先队列) ,stack的常用用法

每次忘记都去查,真难啊

  1 /*
  2 C/C++解题常用STL大礼包 含vector,map,set,queue(含优先队列) ,stack的常用用法 
  3 */
  4 
  5 /*
  6     vector常用用法 
  7 */
  8 //头文件
  9 #include<vector>        
 10  
 11 //常用的初始化方法         
 12 vector<int> v;            //直接定义一个整型元素的向量 且未声明长度,其中int的位置可以换成别的数据类型或者结构体等 
 13 vector<int> v(10);        //定义了10个整型元素的向量,其中每一个数都没有初值
 14 vector<int> v(10, 5);    //定义了10个整型元素的向量,并且为每个元素赋初值5 
 15 
 16 //常用的操作
 17 v.back();                //返回最后一个元素
 18 v.front();                //返回第一个元素
 19 v.clear();                //清空v中的元素
 20 v.empty();                //判断v是否为空,空则返回true,否则false
 21 v.push_back(5);            //在最后的一个元素后插入5 
 22 v.size();                //返回v中的元素的个数 
 23 
 24 sort(v.begin(), v.end(), cmp);    //sort排序,其中cmp部分与结构体等数据类型自定义排序时cmp相同用法 
 25 
 26 for(int i = 0; i < v.size(); i++){    //遍历 
 27     printf("%d\n", v[i]);
 28 } 
 29 
 30 /*
 31     map常用用法 
 32 */
 33 //头文件
 34 #include<map>
 35 
 36 //常用操作 
 37 map<int, int> m;        //初始化 
 38 m[1] = 5;                //以数组形式插入值 
 39 m[2] = 6;
 40 m[1]++;                    //可以参与运算 
 41 m[2] += 2;
 42 cout<<m[1]<<endl;
 43 cout<<m[2]<<endl;
 44 
 45 /*
 46     set常用用法 set中的元素自动从小到大排序,且合并重复元素 
 47 */
 48 //头文件
 49 #include<set>
 50 
 51 //常用操作
 52 set<int>s;        //定义 
 53 s.insert(x);    //插入数值 
 54 s.clear();         //删除set容器中的所有的元素
 55 s.empty();        //判断set容器是否为空
 56 
 57 set<int>::iterator it;                //遍历 
 58 for(it = s.begin(); it != s.end(); it++)
 59 {
 60     printf("%d\n", *it); 
 61 }
 62 
 63 //s.end()没有值
 64 cout<<"s.begin()   "<<*s.begin()<<endl;
 65 //lower_bound()--返回指向大于(或等于)某值的第一个元素的迭代器
 66 cout<<"lower_buond  3  "<<*s.lower_bound(3)<<endl;
 67 //upper_bound()--返回大于某个值元素的迭代器
 68 cout<<"upper_bound  3  "<<*s.upper_bound(3)<<endl;
 69 //find()--返回一个指向被查找到元素的迭代器
 70 cout<<"find(3)   "<<*s.find(3)<<endl;
 71 cout<<"s.size()  "<<s.size()<<endl; 
 72 
 73 /*
 74     queue常用用法 
 75 */
 76 //头文件
 77 #include<queue>
 78 
 79 //常用操作对于普通队列来说
 80 queue<int> q;        //定义一个队列
 81 q.front();            //获取队首元素 
 82 q.pop();            //删除队首元素 
 83 q.empty();            //判断队列是否为空 
 84 q.push(5);             //向队列中加入元素 
 85 
 86 //priority_queue 
 87 priority_queue<int> q;    //定义一个优先队列
 88 q.top();            //获取队列中最大元素(首个)
 89 q.pop();            //删除最大元素(队首)
 90 q.push(x);            //向队列中加入元素
 91 q.empty();            //判断优先队列是否为空 
 92 
 93 //对于结构体而言,需要重载小于号(优先队列按照从大到小排序) 
 94 priority_queue<Node> q; 
 95 
 96 struct Node{
 97     int a, b;
 98     bool operator < (const Node & x) const
 99     {
100         return a > x.a;
101     }
102 }; 
103 
104 /*
105     stack常用用法 
106 */
107 //头文件
108 #include<stack>
109 
110 //常用操作 
111 stack<int> s;        //定义一个栈
112 s.pop();            //删除栈顶元素
113 s.top();            //获取栈顶元素
114 s.empty();            //判断栈是否为空
115 s.push(5);            //向栈中压入5

 

posted on 2019-10-29 18:05  白泽talk  阅读(456)  评论(2编辑  收藏  举报