zoukankan      html  css  js  c++  java
  • 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
    ", 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
    ", *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
  • 相关阅读:
    Java中的I/O 线程 网络
    20169214 2016-2017-2 《网络攻防实践》第六周学习总结
    20169214 2016-2017-2 《网络攻防实践》第五周学习总结
    20169214 2016-2017-2 《移动平台开发实践》第五周学习总结
    20169214 2016-2017-2 《移动平台开发实践》第四周学习总结
    20169214 2016-2017-2 《网络攻防实践》第四周学习总结
    20169214 2016-2017-2 《网络攻防实践》第三周学习总结
    20169214 2016-2017-2 《移动平台开发实践》第三周学习总结
    20169214 2016-2017-2《网络攻防实践》第二周学习总结
    Android开发设计 实验报告
  • 原文地址:https://www.cnblogs.com/YLTFY1998/p/11760535.html
Copyright © 2011-2022 走看看