• pat知识点复习--day78


    STL专题

    本次学习内容:vector,set,string,map

    vector是向量,可以视为不定长数组。set是集合,带自动去重和排序(默认升序排列),string是字符串。map是映射

    定义及访问方式:

      vector<typename> name; 

        eg: vector<int>v;  vector<vector<int> >v;//这个保留空格避免被当作移位符号。vector<int>v[100];//也可以设置定长的

      在访问的时候可以使用下标访问:eg:temp[3],也可使用迭代器访问具体元素,且迭代器可以使用+x的形式

        eg:v[1];  vector<int>::iterator it=v.begin(); *it; *(it+3);  注意v.end()返回的是尾+一个单位元素的地址 v[i]=*(v.begin()+i)

      for(vector<int>::iterator it=v.begin();it!=v.end();it++)

      set<typename> name;

        eg:set<int>s;  set<vector<int> >s;//理由同  set<int>temp[100];//可以设置定长

      只可使用迭代器访问,不可使用下标,it++可以,不可以用it加数字这种。

      string name;

        eg:string str="abcd";//可直接赋值 可使用下标访问,整体的读写使用cin和cout,或者 str.c_str()转换成char str[],再使用printf("%s",a)输出

      string::iterator it=s.begin(); 也可使用直接下标访问。可以使用str.begin()+x,迭代器操作和vector同,str1+str2可以拼接,同时支持大小号比较(返回结果符合字典序)

      str.length()=str.size()

      map<typename1,typename2>temp;自动按照key升序排序。可使用key访问eg:m['c'],是一一对应的,不可以一对多

      注意typename可以是STL可以是其他类型,但是不可以是数组(string可数组不可),迭代器的it++是ok的,it->first是key,it->second是值。

    insert:

      it表示需要写迭代器,pos表示填写下标,temp代表元素值

      vector的:v.insert(it,temp),在迭代器it的位置插入temp,本位数据向后延,不删除。

      set的:s.insert(temp),在集合中插入temp,里面的数据自动排序不需要指定位置

      string的:str.insert(pos,x),在下标pos插入字符串x,或者s.insert(it1,it2,it3)在迭代器it的位置,将迭代器[it2,it3)对应位置的字符串插入。

    相同的:

      v.clear()清除全部元素

      v.size()求元素个数,string多了一个s.length()

    erase:

      vector:v.erase(it)去除迭代器处元素,v.erase(first,last),去除迭代器[first,last)范围内的元素

      set:v.erase(it)去除迭代器处元素,多与find结合 v.erase(find(x)),v.erase(x)直接去除某元素(erase复杂度1,findlogn,合起来还是logn),v.erase(first,last)同上

      string:s.erase(it),s.erase(first,last)同上,多了一个s.erase(pos,length),去除从pos开始的length长度的元素。

      map:m.erase(it),m.erase(first,last)同上,多一个m.erase(key),删除key对应的map数据

    find:

      vector没有

      set:find(x)返回对应x的迭代器

      string:find(str),寻找子串第一次出现的位置,find(str,pos)从pos开始到结束的str第一次出现的位置,结果是下标。

      map:find(key),返回的是key对应的迭代器

    独有的:

      vector:v.push_back(x) ,尾部插入元素x,v.pop_back(),尾部删除最后一个元素。

      string:s.replace(pos,len,str)从pos下标开始长度为len的串,替换成str s.substr(pos,len)返回字符串,从pos下标开始,字符串长度为len

      只有string可以直接拼接,可以使用大于小于比较。别的stl里面迭代器不可以。

    时间才能证明一切,选好了就尽力去做吧!
  • 相关阅读:
    zabbix实现mysql数据库的监控(四)
    Redis高级进阶(一)
    Redis高级进阶(二)
    Redis的管理
    9.动态SQL
    8.Mapper动态代理
    7.属性名与查询字段名不相同
    6.单表的CRUD操作
    5.API详解
    4.主配置文件详解
  • 原文地址:https://www.cnblogs.com/tingxilin/p/12297139.html
Copyright © 2020-2023  润新知