zoukankan      html  css  js  c++  java
  • C++之STL基本操作

    vector

    1. vector v
    2. reverse(v.begin(), v.end()), 反转容器的内容;
    3. v.push_back() v.pop_back(无参数) v.size();
    4. v.push_front(), 很慢其实;
    5. v.erase();
    6. v.insert(it, value);
    7. vec::iterator it=v.begin();it!=v.end();it++ 遍历;
    8. v.resize(0);

    set

    1. set s
    2. s.insert()
    3. s.find(type)
    4. s.count(type)
    5. s.remove(type)
    6. 红黑树实现,按照字典序的顺序从小到大排序

    unordered_set

    1. unordered_set s
    2. 用法同set, 只不过hash实现,占用空间,但是插入和查找都是o(1)的时间复杂度

    map

    1. map<type1, type2> m;
    2. m[type1]=type2 m.find(type1) m.count(type1) m.remove(type1);
    3. m.first() m.second();
    4. map中不存在相同元素,按照key自动进行排序;
    5. m.count(key)返回的是具有key的元素个数,如果有,则返回1,没有则返回0,注意这里每个key只能有一个或者0个;
    6. m.find(key)返回的是此值所在的位置,没有返回m.end();
    7. m.insert(make_pair(key, value));
    8. map<type1, type2>::Key_type指的是key的类型,返回的是type1;
    9. map<type1,type2>::value_type返回的是pair类型,pair->second返回的是type2类型

    unordered_map

    1. unordered_map<type1, type2> um;
    2. 用法和map类似,底层hash实现key,无序,后一个相同key的值会覆盖前一个key的value;

    stack

    1. stack s;
    2. s.push() s.pop() s.top();

    queue

    1. queue q;
    2. q.push() q.pop() q.front();
    3. q.back(),q.pop_front(),q.push_front();

    priority_queue

    1. priority_queue pq;
    2. 优先队列,本身为“越小的整数优先级越低的优先队列”
    3. 从小到大排列 队首取右边,即大的一方
    4. pq.push() pq.pop() pq.top()
    5. 从大到小排列 priority_queue<int, vector,greater > pq;
    6. 自定义优先队列
    //重载运算符
    struct stu
    {
        string name;
        int num;
        int age;
     
        bool operator<(const stu &p)const
        {
            return age>p.age;
        }
    }S[5];
     
    int main(int argc, char *argv[])
    {
        S[0]={"aa",1,10};
        S[1]={"bb",2,9};
        S[2]={"cc",3,8};
        S[3]={"dd",4,7};
        S[4]={"ee",5,6};
     
        priority_queue<stu>q;
     
        for(int i=0;i<5;i++)q.push(S[i]);
     
        while(!q.empty())
        {
            cout<<q.top().name<<" ";
            q.pop();
        }
     
        return 0;
    }
    
    //自定义仿函数
    struct stu
    {
        string name;
        int num;
        int age;
    }S[5];
     
    struct cmp
    {
        operator ()(const stu &q,const stu &p)
        {
            return q.num<p.num;
        }
    };
     
    int main(int argc, char *argv[])
    {
        S[0]={"aa",1,10};
        S[1]={"bb",2,9};
        S[2]={"cc",3,8};
        S[3]={"dd",4,7};
        S[4]={"ee",5,6};
     
        priority_queue<stu,vector<stu>,cmp >q;
     
        //priority_queue<stu>q;
     
        for(int i=0;i<5;i++)q.push(S[i]);
     
        while(!q.empty())
        {
            cout<<q.top().name<<" ";
            q.pop();
        }
     
        return 0;
    }
    

    string

    1. string a
    2. string b
    3. int pos=a.find(b, startPos);//为从a中的startPos位置上找是否和b有相同的串,有的话返回开始的下标pos,即子串寻找。
    4. a.erase(startPos, size) //即去除a中从startPos开始的长度为size的串
  • 相关阅读:
    解决Cannot download "https://github.com/sass/node-sass/releases/download/binding.nod的问题
    wid是一个字符串 必须转化成整型
    如何获取内联样式的width值
    onresize方法
    jquery中$("#afui").get(0)为什么要加get(0)呢?
    jquery $(document).ready() 与window.onload的区别
    鼠标点击
    添加二级菜单颜色
    homepage左边的导航菜单怎么做的?
    center
  • 原文地址:https://www.cnblogs.com/wangzi199/p/13382500.html
Copyright © 2011-2022 走看看