C++编程系列
文章平均质量分 91
七昂的技术之旅
程序员,浙大CS毕业,在这分享C++ 、机器学习、AI、自动驾驶等知识。公众号、知乎同名。
展开
-
C++: 高效使用智能指针的8个建议
智能指针是C++11提供的新特性,它基于RAII实现,可以自动管理内存资源,避免内存泄漏的发生,但是智能指针也并不是万能的,如果不正确使用智能指针,也会导致内存泄漏的发生,因此,我们需要了解如何高效使用智能指针避免一些可能的陷阱。原创 2024-09-18 21:16:05 · 776 阅读 · 0 评论 -
C++17: 用折叠表达式实现一个IsAllTrue函数
让我们实现一个IsAllTrue函数,支持变长参数,可传入多个表达式,必须全部计算为true,该函数才返回true。本文记录了逐步实现与优化该函数的思维链,用到了以下现代C++新特性知识,适合对C++进阶知识有一定了解的人。这样一种从实际问题来学习和运用知识的过程还是挺有趣的,特此整理分享一下。可变长参数模板 (C++11)折叠表达式 (C++17)条件编译 if constexpr (C++17)类型萃取 type traits (C++11)完美转发(C++11)结构化绑定。原创 2024-09-08 21:09:58 · 1087 阅读 · 0 评论 -
C++ std::shared_ptr自定义allocator引入内存池
C++ 基于std::shared_ptr引入内存池,减少动态内存分配开销。原创 2024-08-06 00:43:42 · 696 阅读 · 0 评论 -
C++: 如何用C语言实现C++的虚函数机制?
动手理解virtual的底层原理。原创 2024-06-30 21:10:47 · 952 阅读 · 0 评论 -
C++: 16个基础的C++代码性能优化实例
近期推动项目屎山代码进行了一波性能优化,实现了较大的性能提升。这里记录了部分近期代码优化的小技巧,这些例子仅从C++语言层面进行优化,主要在于优化类设计、减少隐含函数调用、减少拷贝等,较为基础实用,但涉及的知识点并不少。本文提供了一个视角,可以帮助了解一些C++代码的不同写法性能开销差异。对于很少关注代码性能的人,或许可以看看,提升一下代码性能方面的意识,从而写出性能更高的程序。以下代码会调用一次默认构造函数,一次赋值运算符函数;Matrix m1;以下代码只会调用一次拷贝构造函数。另一个是。原创 2024-06-27 00:06:54 · 862 阅读 · 0 评论 -
C++: shared_ptr是线程安全的吗
对shared_ptr进行并发拷贝,对数据指针和控制块指针仅进行读取并复制,然后对引用计数进行递增,而引用计数增加是原子操作。因此是线程安全的。原创 2024-06-10 23:59:38 · 737 阅读 · 0 评论 -
C++:STL源码中司空见惯的PIMPL是什么?
本文介绍了C++中PIMPL惯用法的基本用法,以及使用原始指针、std::unique_ptr和std::shared_ptr指向Implementation的区别, 以及PIMPL的优缺点。原创 2024-06-10 17:15:55 · 1122 阅读 · 0 评论 -
C++: unordered_map 花式插入key-value的5种方式
无意中发现等插入key-value对在C++17后竟有了超过5种方法,我们可以根据实际场景和对效率的要求,去选择不同的方法。在此不得不夸一夸C++的灵(fù)活(zá)性,不管怎么说,一点无用的知识又增加了。此外发现,Effective STL这本书中对insert()方法的介绍有些过时了。原创 2024-06-07 00:02:39 · 1151 阅读 · 0 评论 -
C++: RAII是什么——使用对象来管理资源
在本文中,我们介绍了C++中的RAII技术,它是一种管理资源的方法,可以帮助我们避免内存泄漏和资源泄漏等问题。在函数中由栈管理的临时对象,在函数结束时会自动析构,从而自动释放资源,因此,我们可以。本文较为详细介绍了RAII的原理、使用方法和优点,并且通过实例讲解了RAII在C++ STL中的应用,如智能指针和互斥锁等,在最后进行了编程实践。原创 2023-10-29 00:47:00 · 2932 阅读 · 0 评论 -
C++ : 仅添加一个引用& 就直接导致程序崩溃
不得向锁所在的作用域之外传递指针和引用,指向受保护的共享数据,无论是通过函数返回值将它们保存到对外可见的内存,还是将它们作为参数传递给使用者提供的函数。原创 2024-05-21 22:59:16 · 437 阅读 · 0 评论