• c++中stl中常见的函数


    vector, 变长数组,倍增的思想
        size()  返回元素个数
        empty()  返回是否为空
        clear()  清空
        front()/back() 
        push_back()/pop_back()
        begin()/end()// begin()是迭代器第一个元素, end()是最后一个元素后面一个
        []
        支持比较运算,按字典序
    
    pair<int, int>  //二元组, 类似字典元素
        pair<int, string> p;
        first, 第一个元素
        second, 第二个元素
        支持比较运算,以first为第一关键字,以second为第二关键字(字典序)
        在构造是 有make_pair()
        p = {20, "abc"};
        用pair存储三个元素 pair<int, pair<int, int> >
    
    string,字符串
        size()/length()  返回字符串长度
        empty()
        clear()
        substr(起始下标,(子串长度))  返回子串
        c_str()  返回字符串所在字符数组的起始地址
    
    queue, 队列
        size()
        empty()
        push()  向队尾插入一个元素
        front()  返回队头元素
        back()  返回队尾元素
        pop()  弹出队头元素
        q = queue<int>(); 用来清空一个队列
    
    priority_queue, 优先队列,默认是大根堆
        size()
        empty()
        push()  插入一个元素
        top()  返回堆顶元素
        pop()  弹出堆顶元素
        定义成小根堆的方式:priority_queue<int, vector<int>, greater<int>> q;
        在插入时插入-x在排序后也可以得到小根堆
    
    stack,size()
        empty()
        push()  向栈顶插入一个元素
        top()  返回栈顶元素
        pop()  弹出栈顶元素
    
    deque, 双端队列 加强版的vector  缺点速度比一般的数组慢好几倍
        size()
        empty()
        clear()
        front()/back()//返回第一各元素 最后一个元素
        push_back()/pop_back() //队尾插入弹出
        push_front()/pop_front() //队首插入弹出
        begin()/end()
        []
    
    set, map, multiset, multimap, 基于平衡二叉树(红黑树),动态维护有序序列
    // set 不允许有重复元素 而 multiset 允许重复元素    
    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位取反
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
  • 相关阅读:
    重庆自考2022报名注意事项
    IP-guard getdatarecord 存在任意文件读取
    练习 3C Tree
    【Hash表】无重复字符的最长字串-力扣 3 题
    2023秋招—大数据开发面经—多益网络
    【毕设选题】深度学习人体跌倒检测 -yolo 机器视觉 opencv python
    【计算机组成原理】寄存器的本质——锁存器
    JFLASH基本使用总结
    【C++】《C++ Primer》第三章 知识点总结
    让酒酿得更明白,国台智能酿造标准体系重磅发布
  • 原文地址:https://blog.csdn.net/m0_64372178/article/details/134496625