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

性能设计模式

class Singleton {
public:
static Singleton& getInstance() {
    static Singleton instance; // 局部静态变量
    return instance;
}
private:
    Singleton() {}
    Singleton(const Singleton&) = delete; // 禁止拷贝
    Singleton& operator=(const Singleton&) = delete; // 禁止赋值
};

容器类型

插入性能

删除性能

查找性能

随机访问性能

内存使用情况

底层实现

std::vector

末尾 O(1),其他 O(n)

末尾 O(1),其他 O(n)

O(n)

O(1)

紧凑(数组式存储)

动态数组

std::deque

前后 O(1)

前后 O(1)

O(n)

O(1)

较紧凑

分块数组

std::list

O(1)

O(1)

O(n)

O(n)

高(每个元素有指针)

双向链表

std::forward_list

O(1)

O(1)

O(n)

O(n)

较低

单向链表

std::map

O(log n)

O(log n)

O(log n)

O(log n)

较高(树结构)

红黑树

std::unordered_map

O(1) 均摊,最坏 O(n)

O(1) 均摊,最坏 O(n)

O(1) 均摊,最坏 O(n)

不支持

较高(哈希表开销)

哈希表

std::set

O(log n)

O(log n)

O(log n)

O(log n)

较高(树结构)

红黑树

std::unordered_set

O(1) 均摊,最坏 O(n)

O(1) 均摊,最坏 O(n)

O(1) 均摊,最坏 O(n)

不支持

较高(哈希表开销)

哈希表

std::stack

O(1)

O(1)

不支持

不支持

与底层容器相同

deque / vector

std::queue

O(1)

O(1)

不支持

不支持

与底层容器相同

deque

std::priority_queue

O(log n)

O(log n)

O(1)

不支持

与底层容器相同

堆结构

  • mapmap 中的元素是按 键值的升序 存储的。由于底层使用了红黑树结构,每次插入元素时会自动对元素进行排序。你可以在遍历时按键值的顺序访问元素。

  • unordered_mapunordered_map 中的元素 没有特定的顺序。哈希表不维护元素的顺序,元素的插入顺序和访问顺序没有特定规则,完全取决于哈希值的分布。


http://www.kler.cn/a/321453.html

相关文章:

  • 二叉树遍历的非递归实现和复杂度分析
  • 使用热冻结数据层生命周期优化在 Elastic Cloud 中存储日志的成本
  • Go开发指南- Goroutine
  • 解决failed to execute PosixPath(‘dot‘) 或者GraphViz‘s executables not found
  • LeetCode面试经典150题C++实现,更新中
  • 人力资源招聘系统的革新之路:从传统到智能的转变
  • 1.6 判定表
  • 【C++与数据结构】搜索二叉树(BinarySearchTree)
  • 数据仓库-数据质量规范
  • 问:聊聊JAVA中的共享锁和独占锁?
  • 了解针对基座大语言模型(类似 ChatGPT 的架构,Decoder-only)的重头预训练和微调训练
  • 前端Vue 基础学习1
  • 暗黑破坏神4新资料片憎恶之躯即将上线,第六赛季暗黑破坏神4搬砖如何获得最大收益?
  • 响应式的几种解决方案——媒体查询、flex、grid、多列布局、瀑布流和数据可视化屏幕的缩放处理
  • 极狐GitLab 17.4 重点功能解读【三】
  • crontab -e 修改为vim 编辑
  • Jenkins 2.477版本升级
  • 嵌入式学习——进程间通信方式(1)——有名管道和匿名管道
  • 高频 SQL 50 题(基础版)| 180. 连续出现的数字
  • The Open Group 2024生态系统架构·可持续发展年度大会全面解读
  • 企业微信AI社群助手:赋能企业私域运营的新引擎
  • JAVA集成Jasypt进行加密、解密(SpringBoot)
  • 【ARM 嵌入式 编译系列 10.4 -- GNU Binary Utilies】
  • python测试开发---前后端交互Axios
  • 利用 ARMxy边缘计算网关和 BLiotlink 软网关,实现工业智能化升级
  • VB.NET中如何利用ADO.NET Entity Framework进行ORM(对象关系映射)