摘要: push_back 与 emplace_back 的区别 push_back: 功能:将一个对象(或其副本)添加到 vector 的末尾。 参数:接受一个对象(或其副本)的引用。 过程: 如果传入的是一个临时对象或一个已有对象,push_back 会创建该对象的副本(或者通过移动构造函数将其移动到 阅读全文
posted @ 2024-09-18 20:57 牛马chen 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 在 C++ 中,资源获取即初始化(RAII, Resource Acquisition Is Initialization)是一种管理资源的编程惯用法。其核心思想是将资源的获取和释放绑定到对象的生命周期中。具体来说: 资源获取: 在对象构造时获取资源,比如内存、文件句柄、网络连接等。 将资源的句柄或 阅读全文
posted @ 2024-09-18 17:14 牛马chen 阅读(8) 评论(0) 推荐(0) 编辑
摘要: std::variant 是 C++17 引入的一种类型安全的联合体,用来存储多个可能类型中的一种值,且保证使用时的类型安全。相比于传统的 union,std::variant 不仅能够存储不同类型的值,还能自动管理复杂类型的构造与析构。 如何快速上手 std::variant。 1. 定义 std 阅读全文
posted @ 2024-09-18 17:09 牛马chen 阅读(77) 评论(0) 推荐(0) 编辑
摘要: placement new 是 C++ 中的一种特殊的内存分配技术,用来在指定的内存地址上直接构造对象。与普通的 new 运算符不同,placement new 并不分配新的内存,而是在已经分配好的内存上调用对象的构造函数。 placement new 的典型使用场景 当需要完全控制内存分配和释放时 阅读全文
posted @ 2024-09-18 17:04 牛马chen 阅读(28) 评论(0) 推荐(0) 编辑
摘要: 传统的 union 联合体在 C++ 中虽然提供了一种能够在相同的内存空间内存储多种不同类型的方式,但它也有一些显著的缺陷和限制。这些缺陷让 union 的使用不太安全,尤其是在复杂的程序中。以下是传统 union 的几个主要缺陷: 1. 类型安全性缺失 union 可以同时存储不同类型的值,但它不 阅读全文
posted @ 2024-09-18 16:13 牛马chen 阅读(19) 评论(0) 推荐(0) 编辑