STL简介

本文介绍了C++STL库中的各种容器如vector、queue、priority_queue、stack、deque以及集合类如set、map和它们的特性、方法,包括动态数组、队列操作、排序和查找算法等。
摘要由CSDN通过智能技术生成

C++STL简介

/*
vector 变长数组(数组长度可以动态变化) 倍增思想
    size()返回元素个数
    empty()返回是否为空
    clear()清空
    front()返回vector第一个数/back()返回vector最后一个数
    push_back向vector最后插入一个数/pop_back把vector最后一个数删掉
    begin()是vector的第0个数/end()是vector的最后一个数的后面那个数 迭代器
    vector支持随机寻址
    vector的三种遍历方式:
    for(int i = 0;i<a.size();i++)cout<<a[i]<<' ';
    for(vector<int>::iterator i = a.begin();i!a.end();i++)cout<<*i<<' ';
    //iterator<int>iterator可以直接写成auto,a.begin()就是a[0],a.end()就是a[size()]
    for(auto x : a)cout<<x<<' ';
    vector 支持比较运算,按字典序

pair<int,int>
    first 第一个元素,second 第二个元素
    支持比较运算,以first为第一关键字,以second为第二关键字 (字典序)

string 字符串
    size()/length()返回字符串长度
    empty()
    clear()
    '+'号做字符串拼接
    substr()返回某一个子串
    c_str()返回string对应数组的头指针

queue 队列
    size()
    empty()
    push()往队尾插入一个元素
    front()返回队头元素
    back()返回队尾元素
    pop()弹出队头元素

priority_queue 优先队列 (堆) 默认是大根堆
    push()往堆里插入一个元素
    top()返回堆顶元素
    pop()弹出堆顶元素
    定义成小根堆的方式:
        priority_queue<int,vector<int>,greate<int>>q;

stack 栈
    size()
    empty()
    push()往栈顶插入一个元素
    top()返回栈顶元素
    pop()弹出栈顶元素

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() 支持++ --操作 返回前驱和后继
    set/multiset:set里没有重复元素,multiset里可以有重复元素
        insert() 插入一个数
        find()查找一个数
        count()返回某一个数的个数
        erase():
            1.输入是一个数x,删除所有x   时间复杂度是o(k+logn) k是x的个数
            2.输入是一个迭代器,删除这个迭代器
        lower_bound()/upper_bound():
            lower_bound(x) 返回大于等于x的最小的数的迭代器
            upper_bound(x) 返回大于x的最小的数的迭代器
    map/multimap://存的是一个映射
        insert()插入的数是一个pair
        erase()输入的参数是pair或者迭代器
        find()
        []可以像数组一样用,时间复杂度是o(logn)

unordered_set,unordered_map,unordered_multiset,unordered_multimap 基于哈希表实现,无序
    和上面类似,增删改查的时间复杂度是o(1)
    不支持lower_bound()/upper_bound()和迭代器的++ --

bitset 压位
    bitset<10000>s;
    ~,&,|,^
    >>,<<
    ==,!=
    []
    any()返回有多少个1
    count()判断是否至少有一个1
    none()判断是否全为0
    set()把所有位置变成1
    set(k,v)将第k位变成v
    reset()把所有位变成0
    flip()把所有位取反,等价于~
    flip(k)把第k位取反

系统为某一程序分配空间时,所需时间,与空间大小无关,与申请次数有关
*/

  • 20
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值