自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 资源 (1)
  • 收藏
  • 关注

原创 通过std::async异步处理耗时任务

使用 std::async 函数将该操作异步执行,并通过 std::future 对象获取其结果。在主线程中,可以继续执行其他任务,而不必等待长时间运行的操作完成。std::async 是 C++ 中的一个标准库函数,用于创建异步任务,它可以在单独的线程中执行给定的函数或可调用对象,并返回一个 std::future 对象,用于获取异步任务的结果。在需要执行长时间运行的操作时,可以将任务放入一个独立的异步线程中,以避免阻塞主线程并提高程序的响应性。

2023-11-02 16:42:48 189

原创 如何实现一个bool变量改变时自动调用回调函数的机制

在这个简化的示例中,我们创建了一个名为 CallbackManager 的类,其中包含一个 std::vector,用于存储回调函数。CallbackManager 类提供了 addCallback 方法来添加回调函数,并提供了 notify 方法来触发所有回调函数的执行。要实现一个 bool 变量改变时自动调用回调函数的机制,可以使用 C++11 中的 std::function 和 std::vector 来实现一个简单的回调函数机制。

2023-10-31 15:18:41 143

原创 用C++QT实现一个modbus rtu通讯程序框架

具体的数据处理将根据需求进行扩展和实现,如写入数据和处理异常等。另外,需要根据实际情况设置正确的串口参数和设备地址,并确保与Modbus设备的正确连接。在编译和运行程序之前,还需要在项目的.pro文件中添加QT+=serialport以启用QtSerialPort模块。

2023-10-31 13:38:49 1603 1

原创 如何判断一个C++/QT线程是否正在执行任务

首先,在自定义的线程类中添加一个标志变量,用于表示线程是否正在执行任务。最后,可以通过读取标志变量的值来判断线程是否正在执行任务。然后,在任务开始和结束的地方分别设置和清除该标志变量。

2023-10-31 13:29:34 660

原创 如何利用VS打包C++程序

如何将VS开发的C++程序打包发给别人使用呢?

2023-06-26 21:33:52 2992

原创 7.外观模式C++用法示例

外观模式中定义一个外观类,它封装了子系统的复杂性,并提供了一个简单的接口,以方便客户端访问子系统;外观模式(Facade Pattern)是一种结构型设计模式,它提供了一个简单的接口,隐藏了一个或多个复杂的子系统的复杂性,并使这些子系统更容易使用。:外观模式的目的是简化客户端与子系统之间的交互,隐藏子系统的复杂性;而装饰器模式的目的是在不改变原有对象结构的基础上,动态地为对象添加新的功能。:外观模式对原有子系统的代码没有任何影响,而装饰器模式则需要在原有类的基础上进行修改或添加新的代码。

2023-05-10 11:14:26 669

原创 Lambda语法解析

/ 按照字符串长度排序 std :: sort(words . begin() , words . end() , [ ](const std :: string & a , const std :: string & b) {});// 输出排序结果 for(const auto & word : words) {return 0;

2023-04-27 10:29:52 603

原创 6.装饰器模式C++用法示例

在main函数中,我们首先创建一个ConcreteComponent对象,然后用ConcreteDecoratorA和ConcreteDecoratorB装饰它,最后调用operation方法以观察输出结果。该模式可以动态地将责任附加到对象上,从而提供一种灵活的替代方法,以继承的方式静态地扩展对象的行为。最后,可以通过将具体组件对象传递给具体装饰器对象,动态地添加新行为。可以看到,具体组件的默认行为在两个具体装饰器的新行为之前被执行,而两个具体装饰器的新行为则按顺序被执行。,以及一个或多个具体。

2023-04-19 15:57:42 545

原创 5.适配器模式C++用法示例

为了解决这个问题,创建了一个类适配器ClassAdapter,它同时继承了目标接口和适配者类,同时实现了目标接口中的方法,在该方法中调用了适配者类中的方法specificRequest()。总的来说,如果可以修改被适配类的代码,并且不需要支持所有的被适配类接口,那么对象适配器模式是一个更加灵活和可扩展的选择。但是如果不能修改被适配类的代码,并且需要支持所有的被适配类接口,那么类适配器模式是一个更加合适的选择。适配器模式的原理是将一个类的接口转换成客户希望的另一个接口。

2023-04-12 22:59:45 461

原创 4.策略模式C++用法示例

策略模式(Strategy Pattern)是一种行为设计模式,用于将算法家族(一组相似的算法)封装起来,使它们可以相互替换,让算法的变化独立于使用算法的客户端。

2023-04-07 12:31:39 386

原创 3.观察者模式C++用法示例

观察者模式(Observer Pattern)是一种行为型设计模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听一个主题对象,当主题对象状态发生改变时,会通知所有观察者对象,使它们自动更新自己。

2023-04-06 13:06:34 569

原创 数据结构与算法(基于<algorithm>)

C++的algorithm库是STL标准库的一部分,提供了许多常用的算法函数,包括排序、查找、遍历等等。这些函数可以大大简化C++操作数据结构的程序的编写过程,同时也具有高效和可靠的特性。

2023-04-02 16:09:34 1027

原创 Graph(图)干货归纳+用法示例

C++图(Graph)是一种数据结构,用于表示对象之间的关系。它由节点(Vertex)和边(Edge)组成,节点表示对象,边表示对象之间的关系。

2023-04-01 22:29:17 1564

原创 2.单例模式C++用法示例

二.单例模式一.前言1.为什么需要单例模式2.实现方法二.懒汉模式——在需要使用对象时才进行实例化,而不是在程序启动时就进行实例化1.优缺点2.适用场景3.C++程序示例二.饿汉模式——在程序启动时就进行实例化,而不是在需要使用对象时才进行实例化1.优缺点2.适用场景3.C++程序示例一.前言单例模式(Singleton Pattern)是一种创建型设计模式,它保证一个类只有一个实例,并提供一个全局访问点,任何尝试创建新实例的操作都会返回同一个实例。这可以避免由于多个实例造成的资源浪费或数据不一致等问题

2023-03-31 23:15:17 294

原创 priority_queue(堆)干货归纳+用法示例

在C++中,堆(Heap)是一种特殊的树状数据结构,其中每个节点都比其子节点大或小(具体取决于堆的类型)。堆通常用于实现优先队列和排序算法。

2023-03-30 23:42:14 885

原创 1.工厂模式C++用法示例

工厂模式是一种常见的创建型设计模式,它通过将对象的创建逻辑封装到一个类中,使得创建对象的过程与使用对象的过程分离,从而降低了代码的耦合性。在工厂模式中,我们定义一个工厂类来负责对象的创建,而客户端只需要向工厂类请求对象即可,不需要直接创建对象。简单工厂模式(Simple Factory Pattern):简单工厂模式中,只需要定义一个静态工厂方法,根据不同的参数返回不同的对象。这种方法通常适用于对象较少且创建过程相对简单的场景。工厂方法模式。

2023-03-29 20:11:48 613

原创 list(链表)干货归纳+用法示例

上面的程序创建了一个空的std::list对象mylist,然后向其中添加了四个元素,使用迭代器遍历了链表中的元素,并使用pop_back()、pop_front()、remove()等函数删除了部分元素,最后再次遍历链表中的元素,打印出剩余的元素。需要注意的是,std::list是一个动态分配内存的容器,因此在使用时需要注意内存管理问题,避免内存泄漏。在C++中,list是一种双向链表容器,它可以存储一组数据,而且可以在任意位置进行快速的插入、删除操作。

2023-03-28 23:39:59 778

原创 noexcept语法解析

noexcept 是一个 C++11 引入的关键字,用于表示一个函数或表达式在执行期间是否会抛出异常。它可以作为函数的一部分声明,也可以作为表达式的一部分使用。

2023-03-27 23:21:01 2144

原创 unordered_set/map(哈希表)干货归纳+用法详解

C++哈希表(hash table)是一种数据结构,用于存储和查找键值对。它是由一个哈希函数和一个数组组成的。哈希函数将键映射到数组中的一个位置,这个位置就是键值对应的索引。

2023-03-27 19:23:22 2925

原创 C++重写SharedArrayPtr——指向数组的智能指针类

C++重写SharedArrayPtr智能指针类头文件:kSharedArrayPtr.h测试文件:demo.cpp基于C++11中shared_ptr源码改写。代码都已经过测试检验。头文件:kSharedArrayPtr.h#ifndef _KSHAREDARRAYPTR_H_#define _KSHAREDARRAYPTR_H_#include <iostream>//共享计数的管理在堆上分配数组的智能指针KS

2021-07-19 14:22:58 213

原创 C++重写shared_ptr智能指针类

C++重写shared_ptr智能指针类头文件:kSharedPtr.h测试文件:demo.cpp基于C++11中shared_ptr源码改写。全部代码都已经过测试检验。头文件:kSharedPtr.h#ifndef _KSHAREDPTR_H_#define _KSHAREDPTR_H_#include <iostream>using std::cout;using std::cin;using std::en

2021-07-16 09:08:51 289

原创 C++重写Stack类

C++重写Stack类头文件1:node.h头文件2:Stack.h测试文件:demo.cpp基于STL模板库及侯捷的源码剖析。全部代码都已经过测试检验。头文件1:node.h#ifndef _NODE_H_#define _NODE_H_#include <iostream>using namespace std;//栈元素类template <class T>class node{publ

2021-07-16 09:07:42 229

原创 C++重写String类

C++重写String类头文件:_string.h实现文件:_string.cpp测试文件:demo.cpp基于STL模板库及侯捷的源码剖析。全部代码都已经过测试检验。头文件:_string.h#ifndef _STRING_H_#define _STRING_H_#include <iostream>#include <fstream>using std::cout;using std::cin;

2021-07-15 17:14:18 539

原创 C++解决《最长有效括号》问题(stack,string)

No.32《最长有效括号》;题型:stack,string题目题解思路(栈)题解代码题目题解思路(栈)始终保持栈底元素为当前已经遍历过的元素中“最后一个没有被匹配的右括号的下标”,这样的做法主要是考虑了边界条件的处理,栈里其他元素维护左括号的下标:若遇到左括号,将其下标入栈;若遇到右括号,则将栈顶下标元素弹出,视为匹配了当前的右括号;如果第2步之后栈为空,说明当前的右括号在栈内没有被匹配,将其下标放入栈中;若不为空,说明匹配了一堆“()”,更新ans;题解代码class Solutio

2021-05-08 11:28:21 174

原创 C++解决《单词的压缩编码》问题(vector,string,stl库函数)

No.820《单词的压缩编码》;题型:vector,string题目题解思路(反转字符)题解代码题目题解思路(反转字符)由单词尾部判断是否为包含关系很不方便,故第一步将vector<string>& words内的单词全部反转,存入临时数组vector<string> reverse_words中(利用reverse库函数);利用字符串的sort函数,将vector<string> reverse_words中的单词排序,让相近的单词靠在一起(A&g

2021-05-07 10:59:54 259 1

原创 C++解决《有效的括号》问题(栈,string)

No.20《有效的括号》;题型:栈,string题目题解思路(动态规划)题解代码题目题解思路(动态规划)申请一个栈stack<char> stk,遍历字符串s,用stk来存放临时字符;(1)若字符为"("、"["、"{",则将对应的")"、"]"、"}“入栈;(2)若字符为”)"、"]"、"}",则判断其是否与stk.top()相等,若相等则pop(),否则返回false;若遍历完s后栈为空返回true,否则返回false。题解代码class Solution {pub

2021-05-07 10:12:02 140

原创 C++解决《无重复字符的最长子串》问题(滑动窗口(unordered_set),string)

No.3《无重复字符的最长子串》;题型:滑动窗口(unordered_set),string题目题解思路(动态规划)题解代码题目题解思路(动态规划)申请一个unordered_set<char> lookup,作为滑动窗口,用来存放临时子串;从第一个字符开始,对题目字符串进行遍历,每轮循环中,对窗口的下一个字符进行判断:(1)若在窗口子串中找到该字符,说明新的窗口子串不符合条件,则将窗口最左端元素移出,将新字符加入窗口中后,继续向下遍历;(2)若窗口子串中没有该字符,将该字符加

2021-04-28 14:13:23 1171

原创 C++解决《翻转数列》问题(数学归纳)

题目:翻转数列一.题目1.输入描述:2.输出描述:输入例子1:输出例子1:二.题解1.题解思路:2.题解代码:一.题目1.输入描述:2.输出描述:输出一个整数, 表示前n项和。输入例子1:8 2输出例子1:8二.题解1.题解思路:法一.从1到n进行遍历相加,没隔m个数,反转系数;法二.数学归纳。2.题解代码:法一:#include <iostream>using namespace std;int main(){ long long n,m;

2021-04-26 11:21:45 510

原创 C++解决《反转每对括号间的子串》问题(stack、string)

No.1190《反转每对括号间的子串》;题型:stack、string题目题解思路题解代码题目题解思路遍历题给的字符串,若非")",则将字符压入栈;出现")“后,则开始由顶到底遍历栈寻找”(",并将"("上方的字符暂存于tmp中;找到第一个匹配的"(",将其删去,结束遍历,将tmp中的字符压回栈;将栈内元素自底向顶复制到字符串ans中,此即答案。题解代码class Solution {public: string reverseParentheses(strin

2021-04-23 15:57:02 311

原创 C++解决《特征提取》问题(map、pair)

题目:特征提取一.题目1.输入描述:2.输出描述:输入例子1:输出例子1:例子说明1:二.题解1.题解思路:2.题解代码:一.题目1.输入描述:2.输出描述:对每一个测试用例,输出特征运动的长度作为一行输入例子1:输出例子1:3例子说明1:特征<1,1>在连续的帧中连续出现3次,相比其他特征连续出现的次数大,所以输出3二.题解1.题解思路:申请两个map<pair<int,int>,int>格式的容器,分别用来装已录入帧的各特征出现次数(固

2021-04-23 13:59:47 197

原创 C++解决《每日温度》问题(栈、哈希表)

No.739《每日温度》;题型:栈、哈希表题目题解思路(动态规划)题解代码题目请根据每日 气温 列表,重新生成一个列表。对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。说明:气温 列表长度的范围是 [1, 30000]。每个气温的值的均为华氏度,都是在

2021-04-20 13:45:48 212

原创 C++解决《跳跃游戏 II》问题(贪心、数组)

No.45《跳跃游戏 II》;题型:贪心、数组题目题解思路(动态规划)题解代码题目给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。示例:说明:假设你总是可以到达数组的最后一个位置。题解思路(动态规划)维护当前能够到达的最大下标位置,记为边界end;从左到右遍历数组,到达边界时,更新边界并将跳跃次数增加 1;题解代码class Solution {public: int

2021-04-17 11:31:19 264

原创 C++解决《聪明的编辑》问题(string、归纳)

题目:聪明的编辑一.题目1.输入描述:2.输出描述:3.输入例子1:4.输出例子1:二.题解1.题解思路:2.题解代码:我叫王大锤,是一家出版社的编辑。我负责校对投稿来的英文稿件,这份工作非常烦人,因为每天都要去修正无数的拼写错误。但是,优秀的人总能在平凡的工作中发现真理。我发现一个发现拼写错误的捷径:三个同样的字母连在一起,一定是拼写错误,去掉一个的就好啦:比如 helllo -> hello两对一样的字母(AABB型)连在一起,一定是拼写错误,去掉第二对的一个字母就好啦:比如 helloo

2021-04-17 10:59:25 55

原创 queue(队列)干货归纳+用法示例

7.queue1.queue简介2.queue成员函数3.queue实例1.queue简介queue即“双端有序队列”, 是STL模板库中的一种先进先出(FIFO)的适配器(容器的封装),头文件:<queue>队列遵循先进先出的原则,只能在队的前端进行删除, 在队的后端进行插入。队列内的元素不能访问。如果一定要访问队列内的元素,只能将前面元素全部从队前弹出,使之变成队首元素才可以。queue对象的默认构造形式:queue<int>a;2.queue成员函数1) q

2021-04-16 11:58:39 3100 1

原创 stack(栈)干货归纳+用法示例

6.stack1.stack简介2.stack成员函数3.stack实例1.stack简介stack即“堆栈”, 是STL模板库中的一种先进后出(FILO)的容器,头文件:<stack>堆栈遵循后进先出的原则,访问和删除都只能对栈顶的元素(即最后一个被加入栈的元素)进行,并且元素也只能被添加到栈顶。栈内的元素不能访问。如果一定要访问栈内的元素,只能将其上方的元素全部从栈中删除,使之变成栈顶元素才可以。stack对象的默认构造形式: stack <T> stkT;2.

2021-04-16 10:50:12 1612 1

原创 string(字符串)干货归纳+用法示例

5.string一.string简介1.简介:2.常用操作函数汇总:二.string常用实例1.字符串构造(初始化)2.char*(char[])、int与string的相互转换(c_str)3.字符串大小和容量(size、max_size、capacity):4.字符串比较(>,>=,<,<=,==,!=、compare):5.字符串切割、拼接(substr、append、+) :6.字符串等增、删(push_back、insert、erase) :7.字符串的查找(find) :

2021-04-14 14:06:45 3002

原创 基数排序C++实现

10.基数排序基数排序的基本思想基数排序的算法步骤C++代码实现基数排序的基本思想基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。基数排序的发展:(计数→桶→基数排序)计数排序:每个桶只存储单一键值;桶排序:每个桶存储一定范围的数值;基数排序:根据键值的每位数字来分配桶。静态图解:按照个位数进行排序;按照十位数进行排序;按照百位数进行排序

2021-04-13 14:21:15 2084 1

原创 桶排序C++实现

9.桶排序桶排序的基本思想桶排序的算法步骤C++代码实现桶排序的基本思想桶排序是计数排序的扩展,计数排序可以看成每个桶只存储一个元素,而桶排序每个桶存储一定范围的元素。桶排序原理:假设输入数据服从均匀分布,将数据分到有限数量的桶里,然后对每个桶分别进行内部排序,最后把全部的数据合并放回原数组中。时间、空间复杂度:桶排序的时间复杂度,取决于对各个桶内数据进行排序的时间复杂度(桶内排序),因为其他部分的时间复杂度都是o(n)(桶际排序)。桶划分地越小,各个桶内的数据越少,排序时间也会越少,但相应的空间

2021-04-12 13:34:07 2099 1

原创 计数排序C++实现

8.计数排序计数排序的基本思想计数排序的算法步骤C++代码实现计数排序的基本思想计数排序是一种非比较式排序,其基本思想是以空间换时间,其对特定序列的排序时间复杂度为o(n),快于任何传统的比较式排序;计数排序的核心在于将数值转化为键,存储在额外开辟的数组空间中。作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数,其适用场景为:重复数较多的、在一定范围内的整数数列;计数排序的算法步骤获取待排序列最大元素的值(imax),申请一个大小为(imax+1)的临时数组(tmp)

2021-04-10 10:38:08 722

原创 map(树)干货归纳+用法示例

4.map一.map简介1.map特性1.map头文件及构造对象1.map常用库函数二.map常用实例1.map数据插入(insert)2.map数据的遍历(打印输出)3.由key查找对应的value4.其他操作一.map简介1.map特性map是STL的一个关联容器,它的底层结构是红黑树(unordered_map的底层结构是哈希表),其处理一对一数据的效率较高;map中的所有元素都是pair,pair的第一个元素称为关键字(key),第二个称为值(value);map中所有元素(pair)都

2021-03-31 16:07:20 1427

个人银行账户管理程序.zip

1.清华大学郑莉C++公开课的课程实践内容。 2.完成方式:跟随网课边学边写+查课本+搜索网络资源。 3.完成后回馈大众,希望对各位有帮助~

2021-03-23

空空如也

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

TA关注的人

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