zoukankan      html  css  js  c++  java
  • STL

    简单介绍一些关于c++STL

    NO.1 map

    1   头文件,定义 
        #include   <map> 

      定义 map<A,B> fzy;

      定义了A,B的一个map fzy;及标号是A类型,内容是B类型

    2   查找

       map<A,B>::iterator zhi;

       定义了一个指针zhi

       for   (zhi=fzy.begin();zhi!=fzy.end();++zhi)   {} 
    3  基本函数

      begin()    返回指向map头部的迭代器
        clear()    删除所有元素
        count()    返回指定元素出现的次数
        empty()    如果map为空则返回true

    NO.2 vector

    1 头文件,定义

      #include<vector>

      vector<A> fzy; 定义了一个为A类型的名字为fzy的vector

      vector是动态数组。

    2 使用迭代器

      vector<A>::iterator zhi;

      for   (zhi=fzy.begin();zhi!=fzy.end();++zhi)   {} 

    3 插入删除

      fzy.insert(fzy.begin()+i,a);在第i+1个元素前面插入a;

          fzy.erase(fzy.begin()+2);删除第3个元素

    4 基本函数

      1.push_back   在数组的最后添加一个数据
      2.pop_back    去掉数组的最后一个数据 
      3.begin           得到数组头的指针
      4.end             得到数组的最后一个单元+1的指针
      5.erase         删除指针指向的数据项
      6.clear          清空当前的vector
      7.empty        判断vector是否为空

    5 排序

      使用sort排序:需要头文件#include<algorithm>,

      sort(fzy.begin(),fzy.end());(默认是按升序排列,即从小到大).

    NO.3 set 

     1 头文件,定义

      #include<set>

      set<A> fzy;定义了一个A类型的set fzy

     2 使用迭代器

      set<int>::iterator zhi;
          for(zhi=fzy.begin();zhi!=fzy.rend();zhi++)

     3 元素插入,删除

      元素插入:insert()

      元素删除:与插入一样,可以高效的删除,并自动调整使红黑树平衡。
                set<int> s;
                s.erase(2);        //删除键值为2的元素

    4 元素检索

      find(),若找到,返回该键值迭代器的位置,否则,返回最后一个元素后面一个位置。
          set<int> s;

               set<int>::iterator it;
               it=s.find(5);    //查找键值为5的元素
               if(it!=s.end())    //找到
               else            //未找到

    5 基本函数

      1. begin()--返回指向第一个元素的迭代器 

        2. end()--返回指向最后一个元素的迭代器

      3. clear()--清除所有元素

      4. count()--返回某个值元素的个数

      5. empty()--如果集合为空,返回true

      6. erase()--删除集合中的元素

      7. insert()--在集合中插入元素

      8. lower_bound()--返回指向大于(或等于)某值的第一个元素的迭代器

     NO.4 priority queue

    1 头文件,定义

      #include<vector>

      priority_queue 对于基本类型的使用方法相对简单。他的模板声明带有三个参数,priority_queue<Type, Container, Functional>
      Type 为数据类型, Container 为保存数据的容器,Functional 为元素比较方式。

    2 插入,删除

      pop 弹出优先队列中第一个元素

      top 返回优先队列中第一个元素

      push 在尾部插入一个元素

    3 简单堆

      priority_queue<int> 大根堆

      priority_queue<int,vector<int>,greater<int> > 小根堆

    4 operator定义

        代码一

     1 #include <iostream>  
     2 #include <queue>  
     3 using namespace std;  
     4 struct Node{  
     5     int x, y;  
     6 }node;  
     7 struct cmp{  
     8     bool operator()(Node a,Node b){  
     9         if(a.x==b.x) return a.y>b.y;  
    10         return a.x>b.x;}  
    11 };  
    12   
    13  int main(){  
    14     priority_queue<Node,vector<Node>,cmp>q;  
    15     for(int i=0;i<10;i++){  
    16         node.x=i;  
    17         node.y=10-i/2;  
    18         q.push(node);     
    19     }     
    20     while(!q.empty()){  
    21         cout<<q.top().x<<' '<<q.top().y<<endl;  
    22         q.pop();  
    23     }  
    24     return 0;  
    25 }  

      代码二

     1 #include <iostream>  
     2 #include <queue>  
     3 using namespace std;  
     4 struct Node{  
     5     int x, y;  
     6 }node;  
     7  bool operator<( Node a, Node b){  
     8     if(a.x==b.x) return a.y>b.y;  
     9     return a.x>b.x;  
    10 }  
    11  int main(){  
    12     priority_queue<Node>q;  
    13     for(int i=0;i<10;i++){  
    14         node.x=i;  
    15         node.y=10-i/2;  
    16         q.push(node);  
    17     }     
    18     while(!q.empty()){  
    19         cout<<q.top().x <<' '<<q.top().y<<endl;  
    20         q.pop();  
    21     }  
    22     return 0;  
    23 }  

    5 基本函数

      empty()

      push()

      top()

      pop()

     NO.5 pair

    1.头文件,定义

      无需头文件,因为在声明std中已经包涵。定义,pair<int,int> a;这样既可,也可以直接初始化pair<string, string> a("James", "Joy");这样子的。

    2.操作

      对于pair类,由于它只有两个元素,分别名为first和second,因此直接使用普通的点操作符即可访问其成员  

      生成pair    make_pair(A,B);中间分别为两个类型。

  • 相关阅读:
    区块链技术的应用场景
    区块链快速了解
    区块链工作汇报部分问题
    区块链Fabric 交易流程
    maven配置settings.xml【阿里云】
    Java常用工具类整理
    程序员职业思考:从大数据到人工智能再到区块链
    Python实现图像信息隐藏
    Python直接控制鼠标键盘
    Mac使用Clion配置OpenGL
  • 原文地址:https://www.cnblogs.com/fengzhiyuan/p/6985372.html
Copyright © 2011-2022 走看看