自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 qt5/qt6源码在线

qt5/qt6源码在线

2023-07-29 22:44:20 448 1

原创 ​如何撤销git commit​

如果commit后面的注释写错了,可以运行 git commit --amend,进入vim编辑模式,修改完保存即可。执行此命令,本次的(这里HEAD~1)commit会被撤销,commit所对应的修改会撤回到暂存区当中,执行此命令,本次的commit会被撤销,commit所对应的修改会撤回到修改区(工作区)当中,也可以写成HEAD~1,如果进行两次的commit,想要都撤回,可以使用HEAD~2。执行此命令,本次的commit会被撤销,commit所对应的修改会撤回到原始状态,,比较安全,修改不会丢失。

2023-06-27 09:25:57 4122

原创 C++的序列化和反序列化

C++的序列化和反序列化

2023-04-14 18:06:53 413

原创 记录某段代码执行的时间

【代码】记录某段代码执行的时间。

2023-03-31 17:09:48 150

原创 QListWidget右键菜单

【代码】QListWidget右键菜单。

2023-03-31 16:43:19 296

原创 qt实现日志打印

【代码】qt实现日志打印。

2023-03-31 16:23:11 610 2

原创 QSet的元素是自定义结构

【代码】QSet的元素是自定义结构。

2023-03-31 14:58:32 303 1

原创 std::set的元素是自定义结构

std::set的元素是自定义结构

2023-03-31 14:01:52 318

原创 linux下删除.nfs文件

在.nfs文件的目录下面执行:

2023-03-30 14:57:10 1581 1

原创 设计模式的8大设计原则

设计模式的8大设计原则

2022-12-11 22:51:20 97

原创 Adapter 模式(适配器模式)

Adapter 模式(适配器模式)

2022-12-11 22:25:32 239

原创 Strategy 模式(策略模式)

Strategy 模式(策略模式)

2022-12-11 21:35:58 251

原创 Observer 模式(观察者模式)

Observer 模式(观察者模式)

2022-12-11 21:30:58 173

原创 Chain of Responsibility 模式(责任链模式)

Chain of Responsibility 模式(责任链模式)

2022-12-11 21:24:05 106

原创 C++实现线程池

C++实现线程池

2022-12-08 00:21:10 218

原创 C++多线程笔记

C++多线程

2022-12-06 23:22:49 118

原创 delete和delete[]引发的问题

delete和delete[]引发的问题

2022-05-23 01:16:24 979

原创 解决中文显示问题

解决中文显示问题

2022-05-09 13:07:46 264

原创 自动内存管理

自动内存管理

2022-05-04 23:57:35 799

原创 AbstactFactory 模式(抽象工厂模式)

1、结构图2、代码实现#pragma once#include <iostream>#include <memory>// 抽象产品Aclass CAbstactProductA {public: virtual ~CAbstactProductA() {} virtual void mvOperation() = 0;};// 具体产品A1class CConcreteProductA1 : public CAbstactProductA {p

2022-05-04 22:39:27 199

原创 Factory 模式(工厂模式)

Factory 模式(工厂模式)

2022-05-04 21:14:42 299

原创 螺旋三角形

题目:请你设计一个用于填充n阶方阵的上三角区域的程序。填充的规则是:使用1,2,3….的自然数列,从左上角开始,按照顺时针方向螺旋填充。例如:当n=3时,输出:1 2 36 45当n=4时,输出:1 2 3 49 10 58 67当n=5时,输出:1 2 3 4 512 13 14 611 15 710 89要求:程序运行时,要求用户输入整数n(3~20)程序输出:方阵的上三角部分。要求格式:每个数据宽度为4,右对齐。解题思路:1、先水平向右打印值

2021-06-08 00:27:22 769

原创 螺旋队列之算法分析

求解螺旋的队列的步骤如下:1、求坐标(x, y)所在的圈数n; int n = abs(x) > abs(y) ? abs(x) : abs(y);2、求前n-1圈的总个数;如下图所示的红色数字可看出规律:第0圈:12第1圈:32第2圈:52第3圈:72第n-1圈:(2 * (n - 1) + 1)2int value = pow(2 * n - 1, 2);3、求坐标(x, y)在第n圈的位置;我们将坐标分为上、下、左、右四个位置:3.1、坐标在上:如下图所示:v

2021-06-06 00:15:49 289

原创 函数指针

函数名、函数指针、函数名取地址:  函数名:函数首地址,即函数指针常量,  函数调用:myFunc(11);(*myFunc)(11);  函数指针:函数指针变量void(*pFunc1)(int) = myFunc;typedef void(*FuncPtrType)(int);FuncPtrType pFunc2 = myFunc;  函数名取地址:函数指针的初始化表达式中的函数名前面的&操作符是可选的,因为函数名被使用时总是由编译器把它转换为函数指针。&操作符

2021-04-24 00:01:39 239

原创 深入模板基础

一、参数化声明1、虚成员函数  成员函数模板不能声明为虚函数:因为虚函数调用机制的普遍实现都是使用一个大小固定的表,每个虚函数都对应表的一个入口,然后成员函数模板的的实例化个数,要等到整个程序都翻译完毕才能确定,这个和表的固定大小发生冲突。(注:成员函数模板指的时类模板的成员函数是函数模板) template <typename T1> class MyClass { public: // 成员函数 virtual void mvSetNum1(const T1& t

2020-11-25 23:48:32 103

原创 正则表达式的元字符

**正则表达式的元字符**元字符:表示这个字符有特殊含义,代表的不是字符本身1、基本的元字符元字符说明.匹配任意单个字符|逻辑或操作符[]匹配该字符集合中的一个字符[^]排出该字符集合-定义一个范围(例如[a-z])\对下一个字符转义2、量词元字符元字符说明*匹配前一个字符(子表达式)的零次或多次重复*?*的懒惰型版本+匹配前一个字符(子表达式)的一次或多次重复+?+的懒惰型版本

2020-11-17 00:26:26 92

原创 模板基础知识

模板基础知识实例化:用具体类型替代模板参数的过程。模板被编译两次:1、实例化之前,先检查模板代码本身,查看语法是否正确;2、在实例化期间,检查模板代码,查看是否所有的调用都有效。一、函数模板1、声明:template <typename T>int max(const T& a, const T& b) { return (a < b) ? a : b;}2、调用:int a = 10;int b = 100;max(a, b);3、非模

2020-11-16 00:07:59 183

原创 数据结构和算法--顺序循环队列(C++实现)

把队列这种头尾相接的顺序存储结构称为循环队列front:指向对头元素的位置rear:指向队尾元素的下一个位置对列满的条件:(real + 1) % QueueSize == front当对满时,数组中还有一个空闲的元素。队列长度:(rear - front + QueueSize) % QueueSize#include <iostream>const unsigned MAX_SIZE = 10;template<typename T>class CycleQ

2020-07-12 23:16:26 358

原创 数据结构和算法--链队列(C++实现)

队列的链式存储结构,其实就是线性表的单链表,只不过它只能尾进头出而已,简称链队列。#include <iostream>template<typename T>struct queue_node{ queue_node(const T& d) : next(nullptr), data(d) {} queue_node* next; T data;};template<typename T>class LinkQueue{public:

2020-07-12 16:39:04 112

原创 数据结构和算法--链栈(C++实现)

定义:栈是限定仅在表尾进行插入和删除操作的线性表。把允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),不含任何数据元素的栈称为空栈。栈又称为后进先出(Last In First Out)的线性表,简称LIFO结构。#include <iostream>template<typename T>struct stack_node{ stack_node(const T& d) : next(nullptr), data(d) {} stack

2020-07-12 00:29:51 288

原创 数据结构和算法--双向链表(C++实现)

#include <iostream>template<typename T>struct list_node{ list_node() : next(nullptr), prev(nullptr) {} list_node(const T& d) : next(nullptr), prev(nullptr), data(d) {} list_node* next; list_node* prev; T data;};template<typen

2020-07-11 22:50:49 172

原创 数据结构和算法--单链表(C++实现)

#include <iostream>template<typename T>struct list_node{ list_node() : next(nullptr) {} list_node(const T& d) : next(nullptr), data(d) {} list_node* next; T data;};template<typename T>class SingleLinkList{public: Single

2020-07-11 18:44:47 144

原创 C++Primer学习笔记:第14章、重载运算符与类型转换

1、基本概念  1、重载运算符是具有特殊名字的函数:它们的名字由关键字 operator 和其后要定义的运算符号共同组成。和其他函数一样,重载的运算符也包含返回类型、参数列表以及函数体。  2、 如果一个运算符函数是成员函数,则它的第一个(左侧)运算对象绑定到隐式的this指针上,因此,成员运算符函数的(显式)参数数量比运算对象的数量少一个。  注:  如MyClass类重载运算符+为成员函数。  MyClass::MyClass operator+(const MyClass& c1)

2020-07-08 00:11:01 238

原创 解决 error C2374 : g_num : redefinition : multiple initialization

解决 error C2374 : g_num : redefinition : multiple initialization声明类型:1、需要建立存储空间的(如int a;),称为定义性声明,简称定义;2、不需要建立存储空间(如extern int a;),称为引用性声明,简称声明。问题描述:如果在.h文件中定义g_num,多个.cpp文件想共用g_num,因此都包含该.h文件,会造成g_num重复定义。解决方案:g_num在.h里面声明(extern int g_num;),需要在其中一个.c

2020-06-22 22:32:12 1369

原创 C++Primer学习笔记:第15章、面向对象程序设计

C++Primer学习笔记:第13章、拷贝控制1、继承和动态绑定对程序的编写有两方面的影响:我们可以更容易地定义与其他类相似但不完全相同的新类;在使用这些彼此相似的类编写程序时,我们可以在一定程度上忽略掉它们的区别。2、面向对象程序设计的核心思想是数据抽象、继承和动态绑定。通过使用数据抽象,我们可以将类的接口与实现分离;使用继承,可以定义相似的类型并对其相似关系建模;使用动态绑定,可以在一定程度上忽略相似类型的区别,而以统一的方式使用它们的对象。3、在C++语言中,基类将类型相关的函数与派生类不做改变

2020-06-21 23:32:52 262

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除