• STL review:vector & string & map & struct


    I.vector

    1.头文件:#include<vector>                        //容器vector是一个能实现随机存取、插入删除的动态数组,还可以当栈使。  

    2.创建: vector<int> v1;                             // < >里可以是struct或者vector嵌套:vector< vector<int> > ivec;

    vector是一个类模板,创建一个vector的过程称为实例化。

    3.初始化:

    • vector<T> v2(v1);   //  效果同拷贝初始化 vector<T> v2=v1;
    • vector<T> v2(n,val);
    • vector<T> v2{a,b,c,d};  // vector<T> v2={a,b,c,d};
    • 数组指针 
    • int iarray[]={0,1,2,3,4,5,6,6,6,7,8};
      vector<int> v1(iarray,iarray+sizeof(iarray)/sizeof(int));

    4.尾部插入数字:v1.push_back(a);     //  pop_back();

    5.下标实现随机存取: v1[0]=a;

    6.常用函数: empty()  size()  clear()  <=

    7.使用迭代器访问元素.

    vector<int>::iterator it;
    for(it=v1.begin();it!=v1.end();it++)
        cout<<*it<<endl;

    8.插入和删除 insert,erase   配合迭代器,如删除所有值为8的元素

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

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

    9.#include<algorithm>

    (1) 元素翻转:

    reverse(vec.begin(),vec.end());   //将元素翻转(在vector中,如果一个函数中需要两个迭代器,一般后一个都不包含.)

    (2)排序:

    bool Comp(const int &a,const int &b){
        return a>b;
    }

    sort(vec.begin(),vec.end());  //升序排列
    sort(vec.begin(),vec.end(),Comp)  //降序排序

     II.string

    1.头文件:#include<string>

    2.创建与初始化:类似vector

    3.写入读取:

    • cout<<s;  cin>>s;  //以空白(空格、换行、制表符)判断开始结尾,并忽略之  
    • getline(cin,s);    //读一行,以换行符判断结束,并抛弃换行符

    4.empty, size, +, =, <, [],  append/push_back

    5.关于字符变量的函数:isalnum,isalpha,isdigit / tolower,toupper       <cctype>

    6.高级:  

    • 子串:  string substr(int pos = 0,int n = npos) const;//返回pos开始的n个字符组成的字符串
    • 交换:  void swap(string &s2);    //交换当前字符串与s2的值
    • 查找函数:
      •  int find(char c, int pos = 0) const;//从pos开始查找字符c在当前字符串的位置
      • int find(const char *s, int pos, int n) const;//从pos开始查找字符串s中前n个字符在当前串中的位置
      • int find(const string &s, int pos = 0) const;//从pos开始查找字符串s在当前串中的位置

     

    III.map

    1.头文件:#include<map>                        //容器map是一个能实现key到value单射的关联容器,对应数据结构为hash表,其内元素按键值升序排列,键值唯一。

    2.构造:map <string,int> m1;

    3.添加元素: m1["hello"]=5;         //下标既能访问也能赋值也能添加,insert()添加效率高   insert(map<int, CString> :: value_type(2, "Two"))

    4.常用函数: empty()  size()  clear()    迭代器  begin() , end(), erase()         // m1.erase("hi"); m1.erase(it); m1.erase(it,it+5);

    5.按键值查找一个元素       //根据key值快速查找记录,查找的复杂度基本是Log(N)

    • 返回其迭代器:    find()       // if( m1.find("hi")==m1.end() )  如果该key不存在       
    • 返回指定元素出现的次数:  count()         

    IV. struct

    //Definition for singly-linked list.
     struct ListNode {
          int val;
          ListNode *next;
          ListNode(int x) : val(x), next(NULL) {}
      };
     
    

      

    typedef struct rect
    {
        int id;
        int length;
    
      bool operator< (const rect &a)  const
        {
            if(id!=a.id)
                return id<a.id;
            else
            {
                if(length!=a.length)
                    return length<a.length;
            }
        }
    }Rect;
    

      

  • 相关阅读:
    go语言之goroute协程
    Vue中Computed和Watch的用法及区别
    php判断复选框是否被选中的方法
    基于workerman的实时推送
    织梦引入公共模板
    织梦快速建站首页模板
    golang解决中文乱码的方法
    Vue项目中使用可视化图表echarts
    解决for循环中异步请求顺序不一致的问题
    layui多图上传实现删除功能的方法
  • 原文地址:https://www.cnblogs.com/aezero/p/4464260.html
Copyright © 2020-2023  润新知