- 博客(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
原创 队列的链式实现 线程池案例
#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关注的人
RSS订阅