分类: C++

21 篇文章

[笔记]Effective C++改善程序与设计的55个具体做法_第九章 杂项讨论
条款 53:不要轻忽编译器的警告。 请记住: 严肃对待编译器发出的告警信息。努力在你的编译器最高(最严苛)的警告级别下争取"无任何警告"的荣誉。 不要过度依赖编译器的告警能力,因为不同的编译器对待事情的态度并不相同。一旦移植到另一个编译器上,你原本依赖的警告信息有可能消失。 条款 54:让自己熟悉包括 TR1 在内的标准程序库。…
[笔记]Effective C++改善程序与设计的55个具体做法_第八章 定制new和delete
条款 49:了解 new - handler 的行为。 当operator new抛出异常反应一个未满足的内存需求之前,它会先调用一个客户指定的错误处理函数,一个所谓的new-handler。设置错误处理的方式是调用set_new_handler。set_new_handler的标准库信息: namespace std { typedef void…
[笔记]C++容器基础之unordered类型set| Kai@Codehubble
0. 概述 在 C++11 引入 unordered_set 与 unordered_multiset 前,标准库中已有 set 与 multiset 两种有序关联容器,二者底层基于红黑树实现,虽能保证元素的有序性,却需付出 O (log n) 的时间复杂度代价。而实际开发中,大量场景更关注 “快速操作” 而非 “元素有序”—— 比如判断某个值是否…
[笔记]C++容器基础之set| Kai@Codehubble
1. Set 在 C++ 标准库中,std::set 是另一种常用的关联容器,它以单个元素的形式存储数据,核心特点是元素唯一且有序。凭借底层红黑树的实现,set 支持高效的插入、删除和查找操作,在去重、有序存储等场景中应用广泛(比如存储唯一 ID、维护有序序列等)。本文将从 set 的核心特性出发,详解其用法、语法演进及同类容器 multiset …
[笔记]C++容器基础之unordered类型map| Kai@Codehubble
0. 概述 在 C++11 引入 unordered_map 与 unordered_multimap 前,标准库中已有 map 与 multimap 两种有序关联容器,但二者底层基于红黑树实现,虽能保证键的有序性,却需付出 O (log n) 的时间复杂度代价。而实际开发中,大量场景更关注 “快速操作” 而非 “元素有序”—— 比如通过用户 ID…
[笔记]C++容器基础之Map| Kai@Codehubble
1. Map 在 C++ 标准库的容器家族中,std::map 绝对是 “明星成员”—— 它以键值对(Key/Value Pair)的形式存储数据,支持高效的查找、插入和删除操作,在数据映射、快速检索等场景中应用广泛(比如配置项存储、用户信息匹配等)。今天这篇文章,我们就从 map 的核心特性出发,一步步拆解它的用法、语法演进,以及同类容器 mul…
[笔记]C++容器基础之Queue| Kai@Codehubble
1. Queue 在 C++ 编程世界里,标准模板库(STL)宛如一座宝库,为开发者们提供了丰富且强大的数据结构与算法工具。其中,queue 作为一种特殊的数据结构,在众多场景中扮演着不可或缺的角色。本文将深入剖析 queue 的特性、底层实现、操作方法以及应用场景,帮助读者全面掌握这一重要工具。 1.1 概述 queue,即队列,是一种遵循先进先…
[笔记]C++容器基础之Stack| Kai@Codehubble
1. Stack 1.1 基础概念 在计算机科学领域,stack(栈)是一种极为重要的数据结构,遵循 “先进后出(First In Last Out,FIFO)” 原则。形象地说,它就像一个只有一端开口的容器,你从开口处放入物品,最后放入的物品总是最先被取出。在 C++ 的 STL 中,stack 被实现为一个容器适配器。所谓容器适配器,是对其他容…
[笔记]C++容器基础之List | Kai@Codehubble
List List是一个能够存放任意性别的双向链表(doubly linked list) 可以向List中介入一个子链表 为了使用List,必须用include指令包含如下文件,并通过std命名空间去访问: #include <list> int main() { std::list l; } List 的优势 List 的优势在于其…
[笔记]Effective C++改善程序与设计的55个具体做法_第七章 模板与泛型编程
条款 41:了解隐式接口和编译期多态。 描述引入template带来的变化,在template世界中,多态会前移到编译阶段。 请记住 classes和templates都支持接口和多态。 对classes而言接口是显示的,以函数签名为中心。多态则是通过virtual函数发生于运行期。 对template参数而言,接口是隐式的,奠基于有效表达式。多态…