zoukankan      html  css  js  c++  java
  • STL总结

    容器类放入的都是元素的拷贝,而非引用。所以如果需要对元素做出改动,最好是把元素存在data[N]数组中,而仅仅在容器中存放数组下标。

    函数传递容器类参数时,需要传引用,否则会超时。

    vector

    vector作为数组,vector <int> num[ N ],可以当作二维数组使用,由于所有的vector初始为空,所以N可以很大。

    1、vector< vector<int>  >,注意加空格,否则会编译错误。

    2、迭代器访问:vector<int>  vec;       

                               vector<int> :: iterator it;     

                               for(it = vec.begin();   it !=  vec.end();  it++)      //vector 不支持 it < vec.end(), 只能用不等号,  vec.end()指示最后一个元素的下一个地址。[ begin, end)

                                       *it = 123;               //使用迭代器 *it 即可

    3、push_back()、 pop_back(),在末尾加入、删除一个元素, clear() 清空。

    4、size(),返回大小。

    5、insert(it,   x):在迭代器it处插入x。     vector<int> :: iterator it  = vec.begin();   vec.insert(it + 5,  "abcde");  //数组下标5的低方插入"abcde"。

    6、erase(it): 删除迭代器it处的元素。     erase(it,   it + 5):删除区间 [it, it + 5) 的元素,左闭右开

    set

    set内部元素自动递增排序,且不重复

    1、find(x),查找x, 返回x处的迭代器,查找失败为end()。

    2、insert(x), 插入x。

    string

    1、string转char[]:  string ss = “abc”;   char a*  = ss.c_str();

         char[]转string:直接赋值即可。

    2、可直接相加, 可以比较大小。

    3、string ss1 = "abcgh",  ss2 = "def";   ss1.insert(3, ss2);  // 在ss1[3]的位置插入ss2.

    4、erase迭代器删除和vector一致, str.erase( pos,  length); //从pos位置删除length长度的元素

    5、substr(pos, length):  返回从pos开始长length 的子串。(区间操作,使用迭代器就是左闭右开,使用数字下标就是开始位置和长度

    map

    1、map的迭代器使用, key = it->first, val = it->second;

    2、map[ " key" ] 在查询过程中必须先确定是否存在 if(mp.count( "key" ) == 0),否则会返回错误的结果(没有该键值时,会在map中插入该key,并将其值设为默认值)。

    3、mp.erase(key),删除以key为键的元素。

    queue、stack

    1、基本的push、pop操作,pop仅仅删除元素,并不返回。

    2、队列不删除仅访问元素 : front、bac;  栈:top

    3、都没有清空操作,需要自己写循环来pop

    algorithm

    1、max、min、abs、swap

    2、sort(num, num + N, cmp):对于数字参数,b处应写最后一个元素的下一个位置;   对于容器,b处填end。

    3、reverse(it, it2):填入区间,在该区间内反转,填写方式与sort一致。

  • 相关阅读:
    【JavaScript】--ajax
    【Django】--Models 和ORM以及admin配置
    【Django】--基础知识
    【jQuery】--图片轮播
    双系统 windows引导项添加
    LVM
    linux安全加固
    oracle 11G 配置侦听文件
    LVM
    《virtual san 最佳实践》节选 Virtual SAN的发展与现状
  • 原文地址:https://www.cnblogs.com/zhuqiwei-blog/p/8536281.html
Copyright © 2011-2022 走看看