• AcWing STL初步学习


    vector, 变长数组,倍增的思想
        size()  返回元素个数
        empty()  返回是否为空
        clear()  清空
        front()/back()
        push_back()/pop_back()
        begin()/end()
        []
        支持比较运算,按字典序
    
    
    
    pair<int, int>
        first, 第一个元素
        second, 第二个元素
        支持比较运算,以first为第一关键字,以second为第二关键字(字典序)
    
    
    
    string,字符串
        size()/length()  返回字符串长度
        empty()
        clear()
        substr(起始下标,(子串长度))  返回子串
        c_str()  返回字符串所在字符数组的起始地址
    
    
    
    queue, 队列
        size()
        empty()
        push()  向队尾插入一个元素
        front()  返回队头元素
        back()  返回队尾元素
        pop()  弹出队头元素
    
    
    
    priority_queue, 优先队列,默认是大根堆
        push()  插入一个元素
        top()  返回堆顶元素
        pop()  弹出堆顶元素
        定义成小根堆的方式:priority_queue<int, vector<int>, greater<int>> q;
    
    
    
    stack, 栈
        size()
        empty()
        push()  向栈顶插入一个元素
        top()  返回栈顶元素
        pop()  弹出栈顶元素
        没有clear 
    
    
    
    deque, 双端队列
        size()
        empty()
        clear()
        front()/back() 返回第一个或最后一个元素 
        push_back()/pop_back()
        push_front()/pop_front()
        begin()/end()
        []
    
    
    
    set, map, multiset, multimap, 基于平衡二叉树(红黑树),动态维护有序序列
        size()
        empty()
        clear()
        begin()/end()
        ++, -- 返回前驱和后继,时间复杂度 O(logn)
    
        set/multiset
            insert()  插入一个数
            find()  查找一个数
            count()  返回某一个数的个数
            erase()
                (1) 输入是一个数x,删除所有x   O(k + logn)
                (2) 输入一个迭代器,删除这个迭代器
            lower_bound()/upper_bound()
                lower_bound(x)  返回大于等于x的最小的数的迭代器
                upper_bound(x)  返回大于x的最小的数的迭代器
        map/multimap
            insert()  插入的数是一个pair
            erase()  输入的参数是pair或者迭代器
            find()
            []  注意multimap不支持此操作。 时间复杂度是 O(logn)
            lower_bound()/upper_bound()
    
    
    
    
    unordered_set, unordered_map, unordered_multiset, unordered_multimap, 哈希表
        和上面类似,增删改查的时间复杂度是 O(1)
        不支持 lower_bound()/upper_bound(), 迭代器的++,--
    
    
    
    
    bitset, 圧位
        bitset<10000> s;
        ~, &, |, ^  支持所有运算 
        >>, <<
        ==, !=
        []  也可以当成数组来用 
    
        count()  返回有多少个1
    
        any()  判断是否至少有一个1
        none()  判断是否全为0
    
        set()  把所有位置成1
        set(k, v)  将第k位变成v
        reset()  把所有位变成0
        flip()  等价于~     取反 
        flip(k) 把第k位取反
    vector
    /* vector, 变长数组,倍增的思想
        size()  返回元素个数    //所以容器都有 
        empty()  返回是否为空   //所有容器都有 
        clear()  清空   队列没有清空 
        front()/back()  //返回第个数字或者最后一个 
        push_back()/pop_back()  
        begin()/end()   迭代器 
        []
        支持比较运算,按字典序
    */
    
    #include<bits/stdc++.h> 
    using namespace std ;
    int main()
    {
    //    vector<int>a;
    //    vector<int>a[10];  //vector数组,表示定义了十个vector 
    //    vector<int>a(10);//长度为10的vector 
        vector<int>a(10,3);//长度为10的vector ,且每一个数字初始化为3 
        for(auto x:a) cout<<x<<endl; 
    }
    
    
    
    
    #include<bits/stdc++.h> 
    using namespace std ;
    int main()
    {
        vector<int>a;
        for(int i=0;i<10;i++) a.push_back(i);
        for(int i=0;i<a.size();i++) cout<<a[i]<<" ";
        cout<<endl;
        for(vector<int>::iterator i=a.begin();i!=a.end();i++) cout<<*i<<" ";
        cout<<endl;
        for(auto i=a.begin();i!=a.end();i++) cout<<*i<<" ";
        cout<<endl;//迭代器可以看作指针,*可以简化掉 
        for(auto x:a) cout<<x<<" ";
        cout<<endl; 
     } 
     
     
    
    
    #include<bits/stdc++.h> 
    using namespace std ;
    int main()
    {
        vector<int>a(4,3),b(3,4); //按字典排序
        if(a<b) puts("a<b"); 
    } 

    pair

    /* pair<int, int>
        first, 第一个元素
        second, 第二个元素
        支持比较运算,以first为第一关键字,以second为第二关键字(字典序)
        */
    #include<bits/stdc++.h> 
    using namespace std ;
    int main()
    {
        pair<int,string>p;
    //    pair<int,pair<int,int>>p  存储三个 
        p=make_pair(10,"ldy");
        cout<<p.first<<endl<<p.second<<endl;
        return 0; 
    }  

    string

    /* string,字符串
        size()/length()  返回字符串长度
        empty()
        clear()
        substr(起始下标,(子串长度))  返回子串
        c_str()  返回字符串所在字符数组的起始地址
    */
    #include<bits/stdc++.h> 
    using namespace std ;
    int main()
    {
        string a="ldy";
        a+="def";
        a+='c';
        cout<<a<<endl;
        cout<<a.substr(1,3)<<endl; // substr(x,y) 起始位置,长度 
        cout<<a.substr(1,10)<<endl;  //当末尾大于长度,就输出到最后一个为止
        cout<<a.substr(1,10)<<endl; //输出从1开始的整个字符串
        printf("%s
    ",a.c_str());//用scanf输出 
        return 0; 
    }   

    queue

    /* queue, 队列
        size()
        empty()
        push()  向队尾插入一个元素
        front()  返回队头元素
        back()  返回队尾元素
        pop()  弹出队头元素
        没有clear函数 
    */
    #include<bits/stdc++.h> 
    using namespace std ;
    int main()
    {
        queue<int>q;
        q=queue<int>();  //因为没有clear  所以如果要情空,可以重新定义 
        return 0; 
    }    

    priority_queue

    /*priority_queue, 优先队列,默认是大根堆
        push()  插入一个元素
        top()  返回堆顶元素
        pop()  弹出堆顶元素
        定义成小根堆的方式:priority_queue<int, vector<int>, greater<int>> q;
    */
    #include<bits/stdc++.h> 
    using namespace std ;
    int main()
    {
        priority_queue<int,vector<int>,greater<int>>heap;//小根堆 
        
         
    }     

    map

    //像数组一样来用 
    #include<bits/stdc++.h> 
    using namespace std ;
    int main()
    {
        map<string,int>a;
        a["ldy"]=1;
        cout<<a["ldy"]<<endl; 
    }  
  • 相关阅读:
    volatile 关键字介绍
    hystrix 线程数,超时时间设置测试
    idea git tag 管理
    wget 认知及常用命令【转载】
    yum 认知及使用
    zuul 性能分析
    java 内存分析
    eureka-8-Eureka 的健康检查
    eureka-7-多网卡下的ip选择
    鼠标拖动div宽/高值增加与减小
  • 原文地址:https://www.cnblogs.com/QingyuYYYYY/p/11828731.html
Copyright © 2020-2023  润新知