C++ - STL简介

STL容器类的特点

容器优点缺点
std::vector(顺序容器)在末尾插入数据时快(时间固定);可以向访问数组一样的进行访问调整大小时将影响性能;搜索时间和容器包含的元素个数成正比只能在末尾插入数据
std::deque(顺序容器)具备vector的所有有点,还可以在容器开头插入数据,插入数据的时间也是固定的有vector的所有缺点;与vector不同的是,根据规范,deque不需要支持reverse()函数,该函数是让程序员能够给vector预留内存空间,以免频繁的调整大小,从而提高性能
std::list(顺序容器)在list开头/中间或末尾插入数据,所需的事件都是固定的,将元素从list中删除的时间也是固定的,而不管元素位置如何;插入或删除元素后,指向list中其他元素的迭代器仍有效不能像数组那样根据索引随机访问元素;搜索速度比vector慢,因为元素没有存储在连续的内存单元中;搜索时间与容器中的个数成正比
std::forward_list(顺序容器)单项链表类,只能延一个方向遍历只能使用push_front()在链表头部插入数据
std::set(关联容器)搜索时间不是与容器中的元素个数(而是元素个数的对数)成正比,因此搜索速度比顺序容器快的多元素的插入速度比顺序容器慢,因为插入时对元素进行排序
std::unordered_set(关联容器)搜索/插入和删除的速度几乎不受容器包含的元素个数的影响由于元素未被严格排序,因此不能依赖于元素在容器中的相对位置
std::multiset(关联容器)需要存储非唯一的值时,应该使用这种容器插入速度可能比顺序容器慢,因为在插入时对元素进行排序
std:unordered_multiset需要存储非唯一的值时,应该使用这种容器,而不是undered_set;性能与undered_set类似,即搜索/插入和删除的事件是固定的,不受容器长度的影响由于元素未被严格排序,因此不能依赖于在容器中的系那个对位置
std::map(关联容器)用于存储键值对的容器,搜索时间与元素个数的对数成正比,因此搜索速度通常比顺序容器快很多插入时进行排序,因此插入速度比顺序容器慢
std::undered_map(关联容器)搜索/插入和删除元素的时间是固定的,不受容器长度的影响元素未被严格排序,不适用于顺序很重要的情形
std::multimap(关联容器)在需要存储键值且要求键不唯一时,应该选择这个容器,而不是std::map插入时进行排序,因此插入速度比顺序容器慢
std::unordered_multimap在需要存储键值且要求不唯一时,应该选择这个容器,而不是multimap;搜索,插入和删除元素的时间固定的,不受容器的长度影响元素未被严格排序,在需要依赖于元素的相对顺序时,不能使用它
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值