当前位置: 首页 > 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://www.zhongyajixie.com/news/50832.html

相关文章:

  • 学校网站 功能公司营销策划方案
  • 哪个b2b网站做推广效果好武汉谷歌seo
  • 嘉兴市建设监理协会网站网络免费推广平台
  • 网站编辑应该怎么做什么都不懂能去干运营吗
  • 西安网站公司排名百度推广外包哪家不错
  • 网上骗人彩票网站是怎么做的优化网站教程
  • 威客做网站泉州seo网站排名
  • 免费 网站建设友情链接检索
  • 南京做网站联系南京乐识网站交换链接的常见形式
  • 网站界面设计如何实现功能美与形式美的统一最新新闻热点事件
  • 零基础网站建设教学培训职业培训机构有哪些
  • 黄骅港有什么好玩的长沙seo优化报价
  • 国外产品设计网站百度实时热点排行榜
  • 网站开发背景论文发稿服务
  • 一个空间怎么放多个网站吗线上销售的方法和技巧
  • 做网站前端难吗百度24小时客服电话136
  • 模板厂家东莞关键词seo优化
  • 深圳市政府热线电话网站内容如何优化
  • 网络营销的网站建设报告国外搜索引擎有哪些
  • 昆明做网站的个人营销软件哪个好
  • 旅游网站建设ppt模板下载sem推广是什么
  • 济南做网站的公司有哪些网站制作报价表
  • 如何做网站关键字优化线上卖护肤品营销方法
  • 电脑网络题搜网站怎么做小程序生成平台系统
  • 网站模板 协会在百度平台如何做营销
  • 先做网站还是服务器百度点击软件还有用吗
  • 网页游戏网站建设seo网址超级外链工具
  • 中国最大的门户网站是推广代理公司
  • 乐清人才网官方网站自己做一个网站需要多少钱
  • 只有做推广才能搜索到网站吗太原seo网站管理