自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【c++ 11新特性】设计模式 工厂

但是工厂方法会把createProduct作为一个纯虚函数,被具体工厂类 A和具体工厂类 B继承并重写,并用具体工厂类 A和B来实例化对象factoryA 和factoryB,1、简单工厂只有一个工厂类,没有各个产品的具体工厂类,并且直接在基类的Factory 中实现了createProduct,即直接在基类中实现创建产品对象。,用户想实例化什么产品,就直接调用这个产品的工厂类,让类的实例化推迟到子类。工厂方法有具体的工厂类,用户想实例化什么产品,就直接调用这个产品的工厂类,实现简单,易于理解。

2025-03-28 02:02:47 398

原创 【c++ 11新特性】设计模式

后续对同一个 std::once_flag 对象调用 std::call_once 时,会直接跳过执行逻辑。std::once_flag 对象会在第一次调用 std::call_once 时被标记为“已执行”。c、延迟加载:实例可以在需要时才被创建(懒汉式),也可以在类加载时就创建(饿汉式)。2、高效:std::call_once 内部优化了线程同步逻辑,性能优于手动加锁。上述代码中:std::once_flag 和 std::call_once的作用。b、全局访问:提供一个全局访问点来获取该实例。

2025-03-27 21:55:12 391

原创 【c++ 11新特性】右值引用的作用:1、移动语义(移动构造函数 move) 2、完美构造

在这个例子中,当我们使用std::move时,实际上是将资源(即动态分配的字符数组)的所有权从一个对象转移到另一个对象,而不是复制这些数据。右值(rvalue):指的是那些不能被取地址的临时表达式。下面的例子展示了如何使用右值引用和std::forward来实现完美转发,使得参数能够保持其原始的左值或右值属性被传递下去。左值(lvalue):指的是那些有明确地址、能够被取地址的表达式。通常是可以出现在赋值运算符左边或右边的表达式。右值引用在C++中主要是为了支持移动语义和完美转发,右值引用的基本概念。

2025-03-27 17:44:19 179

原创 环形缓冲区

/ 初始化缓冲区 size = RING_BUF_SIZE。// buffer中没有数据。// 向缓冲区中存放数据。// 获取out指针位置。// 从缓冲区中取数据。

2025-03-05 15:26:14 344

转载 什么是哈希表

哈希表

2025-02-05 16:25:31 516

原创 队列的链式实现 线程池案例

#include <stdio.h> #include <assert.h>#include <Windows.h> #include <iostream> #include <iomanip> using namespace std; #define MaxSize 1000 //队列的最大容量 typedef struct _QNode { //任务结点结构 int id; void (*handler)(void);

2021-04-14 00:38:59 131

原创 共享链表

#include<iostream>#include<string> #include<stdlib.h> using namespace std; typedef struct _DoubleLinkNode { //int data; //结点的数据域 struct _DoubleLinkNode *next; //下一个节点的指针域 struct _DoubleLinkNode *prev; //上一个结点的指针域}DbLinkNode,

2021-04-14 00:36:35 145

原创 双向链表

#include<iostream>#include<string> #include<stdlib.h> using namespace std; typedef struct _DoubleLinkNode { //int data; //结点的数据域 struct _DoubleLinkNode *next; //下一个节点的指针域 struct _DoubleLinkNode *prev; //上一个结点的指针域}DbLinkNode,

2021-04-14 00:35:14 123

原创 循环链表

#include<iostream>#include<Windows.h>#include<stdlib.h>using namespace std;typedef struct _LinkNode { int date; struct _LinkNode* next;}LinkList, LinkNode;bool initLink(LinkList* &L); //构造一个空的循环链表 Lbool LinkList_pti

2021-04-14 00:34:36 170

原创 队列 链表实现

#include <stdio.h> #include <assert.h> #include <Windows.h> #include <iostream> #include <iomanip> using namespace std; #define MaxSize 5 //队列的最大容量 typedef int DataType; //队列中元素类型 typedef typedef struct _QNode { //

2021-04-14 00:33:40 166

原创 队列 顺序表实现

#include <stdio.h> #include <assert.h> #include <Windows.h> #include <iostream> #include <iomanip>using namespace std;#define MaxSize 5 //队列的最大容量 typedef int DataType; //队列中元素类型typedef struct Queue { DataType queue

2021-04-14 00:32:11 929

原创 链表

#include <iostream>#include <string>#include <stdlib.h>using namespace std;typedef struct _LinkNode { int date; //数据域 struct _LinkNode* next; //指针域 这个struct可以省略}LinkList, LinkNode; //分别表示链表头和节点//typedef 为struct _LinkNode取别名

2021-04-14 00:30:49 115

原创 顺序表

**#include <iostream>using namespace std;#define MAX_SIZE 100//这样typedef之后 struct定义就不用加struct了 直接用Sqlist a就行typedef struct { int *elems; //顺序表的基地址 //初始化L.elems = new int[MAX_SIZE];//为顺序表分配内存空间 int length; //顺序表的中元素的实际个数 int size; //顺序表的总

2021-04-14 00:28:23 82

空空如也

空空如也

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

TA关注的人

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