c++
文章平均质量分 78
Paul-LangJun
凡事预则立,不预则废。
展开
-
一种C++多线程调试技巧
在C++多线程开发环境中,往往一个进程内部会开辟多个线程,后台log中因此后掺杂多个线程的日志信息,因此,为了快速定位有异常的线程,可以根据线程号对log进行筛选。 比如像查询线程号为100的日志信息,可以通过grep命令过滤出线程号为100的线程日志信息。...原创 2020-11-04 18:44:25 · 322 阅读 · 0 评论 -
C++ STL Deque源码阅读纪要
一、deque是什么 deque是双向队列,队头和队尾都能进行插入和删除,这是与vector不同之处之一。另外与vector的一点不同之处是deque的内存由分段连续空间组成,没有容量的概念,即没有vector在需要扩容时进行的开辟新数组、复制旧数据、清空旧数组的三部曲之说。其内存结构如下图。 如图,deque的内存由两部分构成,第一部分是一个由指针构成的map数组,第二部...原创 2019-12-23 16:14:25 · 180 阅读 · 0 评论 -
智能指针详解
什么是智能指针?智能指针其实和C++内置的指针行为十分相像,只不过它们所指向的对象无需我们主动进行内存释放,而是由它们在合适的时机释放所指向对象占用的内存空间,此即"智能"之处。智能指针有什么特殊功效?首先,智能指针在遇到异常时特别有用,因为它们能确保正确销毁动态分配的对象,所以才叫智能指针啦!其次,它们还可用于跟踪由多个所有者共享的动态分配对象!其它功效,自己多多参悟吧...原创 2019-10-20 16:59:00 · 438 阅读 · 0 评论 -
简述多态在C++与Java中的异同
多态是面向对象的三大特性之一,它使程序可以在运行时动态的绑定要执行的方法。在Java和C++中,有动态绑定静态绑定之分,今天我们就简单聊聊两种绑定在两种语言中的异同。 先对动态绑定和静态绑定两个概念做一个简单介绍。 1、动态绑定 只有在运行时刻才能决定调用哪一个类的方法就是动态绑定。 2、静态绑定 在编译时刻就已经确定了...原创 2019-06-28 15:20:28 · 224 阅读 · 0 评论 -
C++智能指针
转载地址:https://mp.weixin.qq.com/s/fM9fM1UhLhFWHJyKhFyhrg 本文阅读目录 1、智能指针设计思想 2、智能指针简单使用 3、为什么不建议使用auto_ptr 4、如何选择使用哪种智能指针 智能指针设计思想在前面C/C++指针使用常见的坑一文中总结了C/C++中使用指针时可能会遇到的各种坑,...转载 2018-08-02 09:22:28 · 169 阅读 · 0 评论 -
C/C++指针使用常见的坑
转载地址: https://mp.weixin.qq.com/s/8CMN1z4kSJ8deKalgIlN-w C/C++中的指针让程序员有了更多的灵活性,但它同时也是一把双刃剑,如果用的不好,则会让你的程序出现各种各样的问题,有人说,C/C++程序员有一半的工作量是花在处理由指针引起的bug上,可想而知,指针中包含的陷阱是多么可怕。既然如此,我们在编写代码的时候就应该把好关。 要想在...转载 2018-08-02 09:17:15 · 1180 阅读 · 0 评论 -
C++对象模型之内存布局(3)
转载地址:https://mp.weixin.qq.com/s/dTyAC2IQ50c9nmQGOC0c2A 经过两天的摸索,今天终于搞清楚C++对象模型.前两篇C++对象模型之内存布局(2)C++对象模型之内存布局(1)(请戳我)已经讲解了单继承,多重继承和多继承的对象模型.今天讲解菱形继承,虽然过程艰难,但是收获丰富. 简单虚拟继承对象 首先编写如下的测试程序:...转载 2018-08-02 08:54:56 · 182 阅读 · 0 评论 -
C++对象模型之内存布局(2)
转载地址:https://mp.weixin.qq.com/s/UQhTAXIHffN3Now4_utb6g 在C++对象模型之内存布局(1)一文中分别讲了无多态和有多态时单继承的对象内存布局,这篇文章将深入讲解多重继承和多继承. 多重继承 理论讲解:多重继承,顾名思义,就是继承关系大于2,即至少有父类,子类,孙子类三代关系,先定义以下三个类:类B公有继承A...转载 2018-08-02 08:53:38 · 141 阅读 · 0 评论 -
C++对象模型之内存布局(1)
转载地址: https://mp.weixin.qq.com/s/LMJ4Hsa1hmued2egk9uWMQ 如果想学习在linux或者在linux平台下开发,学习C/或C++是非常好的选择.俗话说,术业有专攻,学一门技术,就尽量学得深,也可以作为行走江湖,混口饭吃的一项本领.对于C,当初我是看了C与指针这门书,这本书讲解了很多我没有了解过的知识点,特别是指针讲解的很到位.最后还设计...转载 2018-08-02 08:45:53 · 188 阅读 · 0 评论 -
C++知识点整理
--> 指针 <-- 1. 对于void * 类型的指针,建议将其转换为合适的类型后再进行delete操作,否则将可能出现内存泄漏问题。(原因:编译器无法确定void * 确切的类型信息,也就无从知晓该调用哪个类的析构函数,因此,不进行转换只会释放其指向对象的内存空间,而不会调用其指向对象的析构函数,进而可能导致内存泄漏)。...原创 2018-05-21 09:46:21 · 257 阅读 · 0 评论 -
快速排序
#include<iostream>#define CUTOFF 10 // 定义快速排序的数组规模下界// 交换两个整数void swap(int *fir, int *sec) { int temp = 0; temp = *fir; *fir = *sec; *sec = temp;}// 插入排序算法void InsertionSort(int A[...原创 2015-07-06 19:21:22 · 882 阅读 · 0 评论 -
创建堆
课题----创建优先队列 堆又称之为优先队列,其用途非常广泛,我们可以通过数组实现堆的存储。堆有一条很重要的性质,即堆中任一颗子树的根节点的值总是小于或等于其任一个儿子的节点值(前提是其存在儿子)。 堆存在诸多操作,如建堆,删除根,插入节点,合并堆等。其中建立堆是最基础的操作,在此,通过c++实现堆的建立。#include using namespace std;#define LE原创 2015-03-30 11:16:09 · 543 阅读 · 0 评论 -
一个很好的动态规划入门案例
对于动态规划,每个刚接触的人都需要一段时间来理解,特别是第一次接触的时候总是想不通为什么这种方法可行,这篇文章就是为了帮助大家理解动态规划,并通过讲解基本的01背包问题来引导读者如何去思考动态规划。本文力求通俗易懂,无异性,不让读者感到迷惑,引导读者去思考,所以如果你在阅读中发现有不通顺的地方,让你产生错误理解的地方,让你难得读懂的地方,请跟贴指出,谢谢!----第一节----初识动态原创 2022-02-17 15:19:03 · 1503 阅读 · 5 评论 -
c++链表基本操作
发布时间:2012年 10 月 12日目的:加强链表操作的熟练度心的:某些函数实现的确不容易实现,但经过不断地思考,探索其中的规律,终究会实现。要知道欲速则不达! #include#include#define NULL 0using namespace std; //节点数据类型struct student{int num;string原创 2012-10-12 23:04:16 · 2625 阅读 · 0 评论