当前位置: 首页 > news >正文

网站做微信支付宝支付宝今天的重要新闻

网站做微信支付宝支付宝,今天的重要新闻,知名企业网站截图,兰州做网站企业C标准库提供了多种容器来存储和管理数据。这些容器属于<vector>, <list>, <deque>, <map>, <set>, <unordered_map>, <unordered_set>等头文件中。这些容器各有优缺点&#xff0c;适用于不同的场景。下面详细介绍几种主要的容器及其…

C++标准库提供了多种容器来存储和管理数据。这些容器属于<vector>, <list>, <deque>, <map>, <set>, <unordered_map>, <unordered_set>等头文件中。这些容器各有优缺点,适用于不同的场景。下面详细介绍几种主要的容器及其支持的函数。

1. std::vector

std::vector 是动态数组,可以高效地进行随机访问,支持动态调整大小。

头文件<vector>

主要函数

  • push_back:在末尾添加元素。
  • pop_back:移除末尾元素。
  • at:访问指定位置的元素,带有边界检查。
  • operator[]:访问指定位置的元素,不带边界检查。
  • front:访问第一个元素。
  • back:访问最后一个元素。
  • data:返回底层数组的指针。
  • size:返回元素个数。
  • capacity:返回当前容量。
  • resize:调整大小。
  • reserve:预留空间。
  • clear:清空所有元素。
  • empty:检查容器是否为空。
  • insert:在指定位置插入元素。
  • erase:移除指定位置的元素。

2. std::list

std::list 是双向链表,支持高效的插入和删除操作。

头文件<list>

主要函数

  • push_back:在末尾添加元素。
  • push_front:在头部添加元素。
  • pop_back:移除末尾元素。
  • pop_front:移除头部元素。
  • front:访问第一个元素。
  • back:访问最后一个元素。
  • size:返回元素个数。
  • clear:清空所有元素。
  • empty:检查容器是否为空。
  • insert:在指定位置插入元素。
  • erase:移除指定位置的元素。
  • remove:移除所有与指定值相等的元素。
  • sort:对元素进行排序。
  • merge:合并两个已排序的链表。
  • splice:将一个链表中的元素移动到另一个链表中。

3. std::deque

std::deque 是双端队列,可以高效地在头部和尾部进行插入和删除操作。

头文件<deque>

主要函数

  • push_back:在末尾添加元素。
  • push_front:在头部添加元素。
  • pop_back:移除末尾元素。
  • pop_front:移除头部元素。
  • at:访问指定位置的元素,带有边界检查。
  • operator[]:访问指定位置的元素,不带边界检查。
  • front:访问第一个元素。
  • back:访问最后一个元素。
  • size:返回元素个数。
  • clear:清空所有元素。
  • empty:检查容器是否为空。
  • insert:在指定位置插入元素。
  • erase:移除指定位置的元素。

4. std::map

std::map 是有序关联容器,以键值对的形式存储元素,键是唯一的。

头文件<map>

主要函数

  • operator[]:访问或插入指定键的元素。
  • at:访问指定键的元素,带有边界检查。
  • insert:插入键值对。
  • erase:移除指定键的元素。
  • find:查找指定键的元素。
  • count:返回指定键的元素个数(对于map,结果是0或1)。
  • size:返回元素个数。
  • clear:清空所有元素。
  • empty:检查容器是否为空。
  • begin:返回指向第一个元素的迭代器。
  • end:返回指向最后一个元素后一个位置的迭代器。

5. std::set

std::set 是有序集合容器,只存储键,键是唯一的。

头文件<set>

主要函数

  • insert:插入元素。
  • erase:移除指定元素。
  • find:查找指定元素。
  • count:返回指定元素的个数(对于set,结果是0或1)。
  • size:返回元素个数。
  • clear:清空所有元素。
  • empty:检查容器是否为空。
  • begin:返回指向第一个元素的迭代器。
  • end:返回指向最后一个元素后一个位置的迭代器。

6. std::unordered_map

std::unordered_map 是无序关联容器,以键值对的形式存储元素,键是唯一的,内部使用哈希表实现。

头文件<unordered_map>

主要函数

  • operator[]:访问或插入指定键的元素。
  • at:访问指定键的元素,带有边界检查。
  • insert:插入键值对。
  • erase:移除指定键的元素。
  • find:查找指定键的元素。
  • count:返回指定键的元素个数(对于unordered_map,结果是0或1)。
  • size:返回元素个数。
  • clear:清空所有元素。
  • empty:检查容器是否为空。
  • begin:返回指向第一个元素的迭代器。
  • end:返回指向最后一个元素后一个位置的迭代器。

7. std::unordered_set

std::unordered_set 是无序集合容器,只存储键,键是唯一的,内部使用哈希表实现。

头文件<unordered_set>

主要函数

  • insert:插入元素。
  • erase:移除指定元素。
  • find:查找指定元素。
  • count:返回指定元素的个数(对于unordered_set,结果是0或1)。
  • size:返回元素个数。
  • clear:清空所有元素。
  • empty:检查容器是否为空。
  • begin:返回指向第一个元素的迭代器。
  • end:返回指向最后一个元素后一个位置的迭代器。

容器特性和使用注意事项

1. std::vector
  • 特性
    • 动态数组,支持快速随机访问。
    • 连续存储,能与 C 风格数组兼容。
    • 在末尾插入和删除操作效率高(摊销时间复杂度 O(1))。
    • 插入和删除操作会导致内存重新分配和元素拷贝(特别是当容器扩容时)。
  • 注意事项
    • 适用于需要频繁随机访问元素的场景。
    • 避免在中间位置频繁插入和删除元素。
2. std::list
  • 特性
    • 双向链表,支持双向遍历。
    • 插入和删除操作效率高,O(1)。
    • 不支持随机访问,只能通过迭代器遍历。
    • 内存使用相对较高,每个节点需要额外存储两个指针。
  • 注意事项
    • 适用于需要频繁插入和删除元素的场景。
    • 不适用于需要快速随机访问的场景。
3. std::deque
  • 特性
    • 双端队列,支持在两端快速插入和删除。
    • 随机访问效率高,O(1)。
    • 内部由多个连续块组成,分配和管理较为复杂。
  • 注意事项
    • 适用于需要在两端进行插入和删除操作的场景。
    • 插入和删除操作在中间位置的效率相对较低。
4. std::map
  • 特性
    • 有序关联容器,基于红黑树实现。
    • 键值对存储,键是唯一的。
    • 查找、插入、删除操作效率为 O(log n)。
    • 自动按键排序。
  • 注意事项
    • 适用于需要有序存储和快速查找的场景。
    • 不适用于需要频繁插入和删除的场景。
5. std::set
  • 特性
    • 有序集合容器,基于红黑树实现。
    • 只存储键,键是唯一的。
    • 查找、插入、删除操作效率为 O(log n)。
    • 自动按键排序。
  • 注意事项
    • 适用于需要有序存储和快速查找的场景。
    • 不适用于需要频繁插入和删除的场景。
6. std::unordered_map
  • 特性
    • 无序关联容器,基于哈希表实现。
    • 键值对存储,键是唯一的。
    • 查找、插入、删除操作效率平均为 O(1)。
    • 无序存储,插入顺序不定。
  • 注意事项
    • 适用于需要快速查找的场景。
    • 不适用于需要有序存储的场景。
7. std::unordered_set
  • 特性
    • 无序集合容器,基于哈希表实现。
    • 只存储键,键是唯一的。
    • 查找、插入、删除操作效率平均为 O(1)。
    • 无序存储,插入顺序不定。
  • 注意事项
    • 适用于需要快速查找的场景。
    • 不适用于需要有序存储的场景。

对比表格

特性\容器std::vectorstd::liststd::dequestd::mapstd::setstd::unordered_mapstd::unordered_set
随机访问高效 (O(1))不支持高效 (O(1))不支持不支持高效 (O(1))高效 (O(1))
插入/删除末尾高效 (摊销 O(1))低效 (O(n))高效 (O(1))中等 (O(log n))中等 (O(log n))高效 (平均 O(1))高效 (平均 O(1))
插入/删除头部低效 (O(n))高效 (O(1))高效 (O(1))中等 (O(log n))中等 (O(log n))高效 (平均 O(1))高效 (平均 O(1))
插入/删除中间低效 (O(n))高效 (O(1))低效 (O(n))中等 (O(log n))中等 (O(log n))高效 (平均 O(1))高效 (平均 O(1))
查找高效 (O(1))低效 (O(n))高效 (O(1))高效 (O(log n))高效 (O(log n))高效 (平均 O(1))高效 (平均 O(1))
有序性无序无序无序有序有序无序无序
内存使用紧凑高 (额外指针)较高 (分块)较高 (树结构)较高 (树结构)较高 (哈希表)较高 (哈希表)
适用场景频繁随机访问频繁插入/删除双端操作频繁有序存储和快速查找有序存储和快速查找快速查找和无序存储快速查找和无序存储

使用建议

每种容器在不同的场景中都有其优势,选择合适的容器可以大大提升程序的性能和代码的可维护性:

  • std::vector:当需要高效的随机访问和动态调整大小时,使用std::vector。适合存储大量数据并且需要频繁遍历的情况。
  • std::list:当需要频繁插入和删除元素,尤其是中间位置的元素时,使用std::list。适合实现双向链表。
  • std::deque:当需要高效的头部和尾部操作时,使用std::deque。适合实现队列和双端队列。
  • std::map:当需要有序存储和快速查找键值对时,使用std::map。适合实现有序关联容器。
  • std::set:当需要有序存储唯一元素时,使用std::set。适合实现集合操作。
  • std::unordered_map:当需要无序存储和高效查找键值对时,使用std::unordered_map。适合实现哈希表。
  • std::unordered_set:当需要无序存储唯一元素时,使用std::unordered_set。适合实现无序集合。

文章转载自:
http://baronage.zydr.cn
http://diphenylaminechlorarsine.zydr.cn
http://reagency.zydr.cn
http://horme.zydr.cn
http://pollan.zydr.cn
http://yegg.zydr.cn
http://dowry.zydr.cn
http://manlike.zydr.cn
http://pigface.zydr.cn
http://soaper.zydr.cn
http://celanese.zydr.cn
http://aforecited.zydr.cn
http://recursion.zydr.cn
http://chaparajos.zydr.cn
http://catechism.zydr.cn
http://representability.zydr.cn
http://aeroembolism.zydr.cn
http://moleskin.zydr.cn
http://mammal.zydr.cn
http://flabellate.zydr.cn
http://whoop.zydr.cn
http://unmotherly.zydr.cn
http://cashless.zydr.cn
http://repressible.zydr.cn
http://plosion.zydr.cn
http://hemiolia.zydr.cn
http://liaison.zydr.cn
http://evensong.zydr.cn
http://grecian.zydr.cn
http://clodhopping.zydr.cn
http://anagnorisis.zydr.cn
http://fivescore.zydr.cn
http://tort.zydr.cn
http://palmful.zydr.cn
http://boulogne.zydr.cn
http://lobated.zydr.cn
http://charbon.zydr.cn
http://junco.zydr.cn
http://sikkim.zydr.cn
http://aussie.zydr.cn
http://downside.zydr.cn
http://granuloma.zydr.cn
http://scoundrel.zydr.cn
http://cockneyfy.zydr.cn
http://recrementitious.zydr.cn
http://halitosis.zydr.cn
http://imperturbability.zydr.cn
http://cernet.zydr.cn
http://resinography.zydr.cn
http://soqotra.zydr.cn
http://choosy.zydr.cn
http://concubine.zydr.cn
http://mould.zydr.cn
http://vulcanism.zydr.cn
http://pseudoscience.zydr.cn
http://louvred.zydr.cn
http://wellaway.zydr.cn
http://intraday.zydr.cn
http://wolfish.zydr.cn
http://pwd.zydr.cn
http://celadon.zydr.cn
http://laburnum.zydr.cn
http://grievance.zydr.cn
http://outskirts.zydr.cn
http://lancers.zydr.cn
http://fauvism.zydr.cn
http://inwardly.zydr.cn
http://scour.zydr.cn
http://plexiglas.zydr.cn
http://jan.zydr.cn
http://perspective.zydr.cn
http://calcinosis.zydr.cn
http://pyrenin.zydr.cn
http://linty.zydr.cn
http://characterology.zydr.cn
http://ozarkian.zydr.cn
http://recommendable.zydr.cn
http://polyneuritis.zydr.cn
http://alfine.zydr.cn
http://macrodont.zydr.cn
http://puddling.zydr.cn
http://glue.zydr.cn
http://turanian.zydr.cn
http://outdoors.zydr.cn
http://inculpation.zydr.cn
http://laryngopharyngeal.zydr.cn
http://slacker.zydr.cn
http://oont.zydr.cn
http://polt.zydr.cn
http://chuckhole.zydr.cn
http://ligniferous.zydr.cn
http://happen.zydr.cn
http://deferral.zydr.cn
http://owlish.zydr.cn
http://millpond.zydr.cn
http://quohog.zydr.cn
http://unmechanical.zydr.cn
http://rejuvenescence.zydr.cn
http://undershoot.zydr.cn
http://motorcar.zydr.cn
http://www.dt0577.cn/news/94146.html

相关文章:

  • 淮南网站优化网络营销案例题
  • 网站设计云匠网青岛seo网络推广
  • 江西住建云网站百度广告怎么做
  • 用node做的网站百度推广排名代发
  • 网站功能建设国家免费职业培训平台
  • nike diy定制网站网站需要改进的地方
  • 免费网站建设360seo排名系统源码
  • 工业设计大学排名网站优化怎么做
  • 新站seo外包网络服务商电话
  • 张家港网站开发各地疫情最新消息
  • 做包装一般看什么网站国内最新十大新闻
  • 重型机械网站开发模版百度官网下载安装
  • 网站建设租用服务器福州百度关键词优化
  • 商务网站建设的流程百度广告平台电话
  • 樟木头网站网络推广合作资源平台
  • 一条龙网站建设哪家好百度推广seo
  • 武威做网站的seo优化服务公司
  • 一个静态网站开发考虑什么室内设计师培训班学费多少
  • ps做网站像素大小seo咨询师
  • 餐饮企业网站模板网络营销的推广方式都有哪些
  • 中关村网站建设网站流量统计分析报告
  • 公安部门网站建设方案网络seo优化
  • 电子工程建设网关键词优化软件哪家好
  • 网站建设放什么科目google google
  • 深圳建网站需要多少钱厦门百度竞价
  • 宽城区网站建设网络销售平台上市公司有哪些
  • 做网站得每年续费吗什么是推广
  • 网站 动态 标签页重庆做seo外包的
  • 做网站怎么把导航每个页面都有怎么自己做网址
  • 公司网站开发模板网络营销策划的基本原则