性能&设计模式

cpp 复制代码
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) | 不支持 | 与底层容器相同 | 堆结构 |

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

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

相关推荐
蹊黎1 小时前
C++中vector类的部分简单实现
开发语言·c++·visual studio
程序猿追7 小时前
kotlin-retry 接入鸿蒙后,怎样确认它真的会停止重试
开发语言·kotlin·harmonyos
我是人✓7 小时前
Java文件上传三方式对比:从传统到SpringBoot
java·开发语言
智能直播7 小时前
网络RTMP拉流不卡顿、声音不同步,一文讲透缓冲区、时间戳
开发语言·ffmpeg·php·音视频·视频编解码
墨云安全8 小时前
内网资产无法暴露到公网,怎么做安全检测?2026 年内网渗透测试的落地路径
开发语言·安全·网络安全·渗透测试·php
摇滚侠8 小时前
《计算机是如何工作的:人人都能懂的计算机软硬件工作原理》第 9 章 机器码与汇编语言 阅读笔记 9
java·开发语言·笔记
Cc.Y8 小时前
Java零基础入门:深入Java核心:文件IO与序列化全解
java·开发语言·python
xier_ran8 小时前
【infra之路】AI 编译器学习笔记(六):重拾 C++——lambda 与 MLIR 中的回调
c++·笔记·学习
jimy110 小时前
c++的 Type Traits (一)
开发语言·c++
别动我齐刘海10 小时前
Linux 系统调试学习2
linux·运维·c++·人工智能·学习·机器学习·机器人