容器选用场景

  • 顺序容器

    容器名称初始化赋值元素存取大小插入和删除扩展
    string默认 带参数 拷贝 运算符重载= /.assgin(){2种}[] /.at()size(),strlen(),empty()insert() erase() clear()拼接:+/append() 查找: find()/rfind() 替换:replace() 子串: substr() 比较: compare()
    vector默认 带参数 拷贝 运算符重载= /.assgin() {2种}[] /.at()size(),resize(),reserve(),capacity(),empty()push_back() pop_back() insert(){2种} erase(){2种} clear() 
    deque默认 带参数 拷贝 运算符重载= /.assgin(){2种}[] /.at()size() resize() empty()push_front() pop_front() push_back() pop_back() insert(){2种} erase(){2种} clear() 
    list默认 带参数 拷贝 运算符重载= /.assgin(){2种}只有迭代器,不能随机存取size() resize() empty()push_front() pop_front() push_back() pop_back() insert(){2种} erase(){2种} clear() 
    stack5方法push() pop() top() size() empty()
    queue6方法push() pop() front() back() size() empty()

  • 关联型容器

    容器名称初始化赋值元素存取大小插入和删除查找
    set默认 拷贝 运算符重载=iterator且不能用iterator改变容器中的值size() empty()insert(ele) erase(){3种} clear()find() upper_bound() lower_bound() equal_range()
    multiset同上multiset允许set容器中元素值重复     
    map默认 拷贝 运算符重载= []iterator且不能用iterator改变容器中的值size() empty()insert(pair<class T,class T> (xx,xx)) insert(make_pair(xx,xx)) insert(map<class T, class T>:: value_type(xx,xx)) erase(){3种} clear() 
    multimap同上multimap允许map容器中key值重复     

  • STL容器使用时机

  • 容器vectordequelistsetmultisetmapmultimap
    结构单端数组双端数组双向链表二叉树二叉树二叉树二叉树
    随机存取nonono对key:可no
    元素搜索很慢对key:快对key:快
    元素插入末端首尾两段任意位置----
           deque 的使用场景: 比如排队购票系统, 对排队者的存储可以采用 deque, 支持头
    端的快速移除, 尾端的快速添加。 如果采用
    vector, 则头端移除时, 会移动大量的
    数据, 速度慢。
           vector deque 的比较:
           一: vector.at()deque.at()效率高, 比如 vector.at(0)是固定的, deque 的开始位置却
    是不固定的。
           二: 如果有大量释放操作的话, vector 花的时间更少, 这跟二者的内部实现有关。
           三: deque 支持头部的快速插入与快速移除, 这是 deque 的优点。
           list 的使用场景: 比如公交车乘客的存储, 随时可能有乘客下车, 支持频繁的不确实
    位置元素的移除插入

           set 的使用场景: 比如对手机游戏的个人得分记录的存储, 存储要求从高分到低分的
    顺序排列。
           map 的使用场景: 比如按 ID 号存储十万个用户, 想要快速要通过 ID 查找对应的用
    户。 二叉树的查找效率, 这时就体现出来了。 如果是
    vector 容器, 最坏的情况下可
    能要遍历完整个容器才能找到该用户



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值