性能&设计模式

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

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

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

相关推荐
橘颂TA26 分钟前
【Linux】自旋锁
linux·开发语言·数据库·c++
一诺加油鸭31 分钟前
若依后端系统集成 Swagger 接口文档功能
java·开发语言
ECT-OS-JiuHuaShan31 分钟前
功夫不负匠心人,渡劫代谢舞沧桑
android·开发语言·人工智能·算法·机器学习·kotlin·拓扑学
knight_9___32 分钟前
LLM工具调用面试篇1
开发语言·人工智能·python·面试·agent
珹洺32 分钟前
C++AI多模型聊天系统(一)项目背景意义与整体架构、核心基类实现
c++·人工智能·架构
一脸dio样75435 分钟前
第5章 保护模式进阶,向内核迈进
linux·开发语言
智者知已应修善业39 分钟前
【51单片机ADC-MAX1241/ADC0832驱动】2023-6-6
c++·经验分享·笔记·算法·51单片机
小叮当⇔1 小时前
M4A 转 MP3 桌面转换器(PyQt5 + FFmpeg)
开发语言·qt·ffmpeg
aq55356001 小时前
Laravel9.x新特性全解析
java·开发语言·数据库
珹洺1 小时前
C++AI多模型聊天系统(三)AI多模型(豆包/Kimi/千问)接入与实现
开发语言·c++·人工智能