C++
ScissorsD_初夏
struct
展开
-
观察者模式
接受消息通知进行相应响应。将消息通知给订阅者列表。原创 2023-02-13 20:24:27 · 188 阅读 · 0 评论 -
C语言任意位置默认参数设置
【代码】C语言任意位置默认参数设置。原创 2022-12-01 10:18:55 · 810 阅读 · 0 评论 -
C++11线程池的创建
#pragma once#include <vector>#include <queue>#include <string>#include <thread>#include <future>#include <memory>#include <stdexcept>#include <functional>#include <condition_variable>#includ.原创 2022-05-31 19:30:51 · 270 阅读 · 0 评论 -
进程间通信之消息队列的基本使用
/*********************************************** 进程间通信之消息队列* *******************************************/#include<sys/types.h>#include<sys/msg.h>#include<stdio.h>#include&l...原创 2020-04-14 10:58:36 · 355 阅读 · 0 评论 -
初夏小谈: NC:排序子序列问题
问题:1. 牛牛定义排序子序列为一个数组中一段连续的子序列, 并且这段子序列是非递增或者非递减排序的。牛牛有一个长度为n的整数数组A, 他现在有一个任务是把数组A分为若干段排序子序列, 牛牛想知道他最少可以把这个数组分为几段排序子序列.如样例所示, 牛牛可以把数组A划分为[1, 2, 3]和[2, 2, 1]两个排序子序列, 至少需要划分为2个排序子序列, 所以输出2输入描述:输...原创 2019-04-23 14:24:36 · 510 阅读 · 0 评论 -
初夏小谈:模拟实现STL栈和队列
栈和队列队列的特点:先进先出(FIFO)或者后进后出(LILO)。在生活工作中应用非常广泛,例如生活中的小到银行抽号,医院挂号,小时放学要排队回家,打饭要依次排队。大到正式的颁奖典礼。获奖人员依次排队。举行一场盛大的晚会,舞会等等各种会议。从计划到结束其中过程也是一个排队的过程。栈的特点:先进后出(FILO)或者后进先出(LIFO)。栈在生活中也是应用很广泛的,比如学过栈的老铁听到栈都会...原创 2019-04-29 09:49:44 · 389 阅读 · 0 评论 -
初夏小谈:全面剖析多线程(二)
一、再谈线程安全之条件变量2条件变量用于实现线程间的同步即唤醒与等待。条件变量和互斥锁搭配使用,是因为条件变量本身不具备操作判断的功能,对条件的判断是临界资源的操作,必须保证是原子操作。1.实现多线程操作:在之前的实现的是单线程,并且只用了一个条件变量这导致了唤醒时会混乱,将不知唤醒是做饭的人还是吃饭的人。所以就要用多个条件变量来唤醒和等待不同的对象。在实现中pthread_...原创 2019-05-07 21:00:46 · 272 阅读 · 0 评论 -
初夏小谈:C++之全面剖析多态(一)
一、什么是多态?多态顾名思义就是多种状态,就是不同对象去做同一件任务,会产生多种状态。就是不同继承的类对象去调用同一函数,而执行结果却不相同。例如:每当国庆节等节日时,在都去旅游这件事上,不同的人群会有不同的门票价格。比如去华山旅游,成人全价,学生半价,未成年人免费。一样。不同的人去购票会产生不同的结果。再比如:更贴近学生本身,同一专业的学生,都在学习相同的知识。可是最后,每个人学的...原创 2019-05-24 21:15:07 · 331 阅读 · 0 评论 -
初夏小谈:C++继承(一)之三种继承方式
一、什么是继承?继承通俗的讲就是子承父业。就像古代地主家的儿子就像一个派生类/子类,地主就是基类/父类。地主的儿子会继承他爹的家产。继承就是在一个类的基础上,由于出现新的功能,而又要保持原来基本的功能,就在此类基础上进行扩展。这样生成的类被称为派生类/子类。原有的来被称为基类/父类。继承是面向对象程序设计的层次结构。从复杂的类慢慢衍生到复杂,继承是类设计层次的复用。在C++中继承就...原创 2019-05-21 23:57:41 · 415 阅读 · 0 评论 -
初夏小谈:C++继承(二)之菱形虚拟继承
子类/派生类的六大默认成员函数如何生成?(一)在说子类/派生类的成员函数生成之前,都有哪六大成员函数?即1.负责对象初始化和最后清理的。有构造函数和析构函数。 2.负责拷贝和复制的。有拷贝构造函数和运算符重载函数。 3.负责取地址重载的。有针对普通对象的和const对象的。(二)派生类的成员函数的生成规则:1.子类/派生类初始化时,必须调父类/基类的构...原创 2019-05-22 23:42:11 · 441 阅读 · 0 评论 -
初夏小谈:红黑树原理及实现
一、红黑树的概念及产生原因:红黑树就是一棵二叉搜索树,只不过在里面添加了一些特性,它的结点不是红的就是黑的。红黑树(本质二叉搜索树)是在基于二叉搜索树,为了改善在极端情况下,二叉搜索树的查找不佳的情况。(比如,每个结点只有左孩子/每个结点只有有孩子的情况等等)。二叉搜索树的查找次数就是二叉树的高度。平均查找时间复杂度(O(logn)),最差时间复杂度(O(n))为了解决在极端情况下二...原创 2019-06-19 14:04:37 · 561 阅读 · 0 评论 -
初夏小谈:AI云盘系统
一、做AI云盘系统项目的目的:解决由于经常将一些以前的文件删除,而现今或者以后可能用到的尴尬境地。解决云盘下载限速的问题:在本地虚拟机CentOS7上:30M/S~60M/S,在云服务器上:0.2M/S~1M/S二、AI云盘系统主要功能为:客户端对指定的一个目录进行监听,将比较重要的文件添加到此目录下,系统会自动根据文件的状态信息来对文件进行上传至服务器。并且可以随时随地的进...原创 2019-07-29 14:47:25 · 707 阅读 · 0 评论 -
初夏小谈:基于RSA的大数文件加密系统
RSA加密系统背景:由于对称式加密需要将对称加密算法发送给对方,而这可能会被对方截获,造成密钥泄露。所以如何安全传送加密规则成为了问题。由此出现了非对称式加密算法。其中最常用的RSA加密,其它有ElGamal算法。RSA加密简介:RSA加密算法就是甲方生成公钥和私钥,通过将公钥发送给需要通信的乙方,乙方用公钥对数据进行加密后发送给甲方,由于这个公钥只能由甲方的私钥解密,所以从而保...原创 2019-08-05 12:03:16 · 1045 阅读 · 0 评论 -
初夏小谈:动态规划解决---01背包问题
动态规划利用动态规划进行解决,动态规划的思想就是将大问题化为小问题,求出小问题的解已备在解决大问题中进行使用,而不需要重复计算的方法。即:最优子结构+重叠子问题。动态规划解决问题:两本质三特点四要素。本质:对问题状态的定义。状态转移方程的定义。特点:将一个大问题分割成N个相似小问题。N个小问题只需计算一次。存储N个小问题的解。要素:状态的定义,状态转移方程的状态变化定义,状态...原创 2019-09-02 23:09:39 · 280 阅读 · 0 评论 -
初夏小谈:模拟实现特定的map,插入操作
【2020届秋季校招43】模拟map实现insert插入,要求输入map大小,再插入时,如果map还有可用空间就直接插入,如果size已满,就需要剔除最久的数据然后插入,如果map中有该Key,则如果value小于新value就更新value否则不更新。输入:210_123_50_A0 156691805410_123_50_A1 156691805410_123_50_A1 15...原创 2019-09-09 01:13:03 · 285 阅读 · 0 评论 -
初夏小谈:删除另一个字符串中所有匹配字符问题
题目是这样的:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students. ”和” aeiou” 则删除之后的第一个字符串变成”Thy r stdnts.”输入描述:每个测试输入包含2个字符串输出描述:输出删除后的字符串示例1 :输入They are students.aeiou输出Thy r stdnts解题思路:就是拿着字...原创 2019-04-22 20:54:18 · 382 阅读 · 0 评论 -
初夏小谈:NC:找出数组中出现次数不少于数组一半的整数
题目是这样的:输入n个整数,输出出现次数大于等于数组长度一半的数。输入描述:每个测试输入包含 n个空格分割的n个整数,n不超过100,其中有一个整数出现次数大于等于n / 2。输出描述:输出出现次数大于等于n / 2的数。示例1 :输入3 9 3 2 5 6 7 3 2 3 3 3输出3本题思路:在N个数中需要找出重复出现次数大于等于数组长度的整数。那么对每一个...原创 2019-04-26 16:45:51 · 268 阅读 · 0 评论 -
初夏小谈:类和对象(二)之构造函数
如果一个类中什么成员什么也没有,称它为空类。但是它里面真的什么也没有吗?在C++中空类中会默认生成6个成员函数。首先来说说第一个构造函数。一、什么是构造函数? 1.概念:构造函数是一种特殊的成员函数,它与类名相同,在创建类类型对象时,由编译器自动调用初始化对象,为对象赋一个合适的初始值,并且在对象生命周期内只调用一次。 2.构造函数为什么只调用...原创 2019-03-15 00:20:38 · 235 阅读 · 0 评论 -
初夏小谈:类和对象(三)之默认成员函数
上一篇说明类中六大默认函数之构造函数,今天来说说剩下的5个默认函数。一、析构函数 1. 什么是析构函数? 从构造函数我们知道,它是在创建对象时为对象赋一个合适的初始值,就是初始化对象。而构造函数则和构造函数相反。它是在对象生命周期结束时,编译器自动调用析构函数来清理这个对象的资源的工作。 2.析构函数的特性: ①:无参数无返回值 ...原创 2019-03-15 15:00:27 · 266 阅读 · 0 评论 -
初夏小谈:叩响C++世界的大门
今天开起C++大门,C++对C语言的许多缺陷进行了改进,但是总是会存在一些未知的问题,等着我们共同努力去发现解决。C++是一个不断发展改进的过程,它的魅力也是居高不下。在排行榜中基本紧跟老大哥C语言的步伐。哈哈今天来说说C++一些基础共有十一大部分一、C语言标准中共规定了32个关键字,我们知道这些关键字在编程时是多么重要。同样在C++98中有63个关键字。为我们准备进军C++。二、...原创 2020-04-21 16:46:13 · 328 阅读 · 0 评论 -
初夏小谈:类和对象(四)(特殊的static)
一、不一样的构造函数 1.理清赋值与初始化列表 通过之前的已经知道构造函数是在创建类对象时初始化对象,那么构造函数体中的操作究竟是不是初始化呢?很明显它不是初始化,为什么这么说呢?因为在构造函数内可以进行多次赋值。而初始化只有一次,这就说明函数体内进行的是赋值操作了。 那么之前一直在说对象创建时首先调用构造函数进行初始化,那到底是怎回事呢?这当然没错,只不过...原创 2019-03-21 23:34:41 · 254 阅读 · 0 评论 -
初夏小谈:速查节日倒计时(小项目)
前言:在实现这个小项目中需要用到C++的一些相关知识。例类的相关成员函数,友元,运算符的重载,string,vector的一些操作等。也是对前一段C++基础知识的复习。实现这个小项目也是为了所收获的东西进行实战。在这个小项目实现的过程中也遇到了好几个问题,可能由于春季的温差变化有点大。博主不胜洗礼有点感冒,脑袋有点晕啊,竟然连头文件重复包含了都没有意识到。^_^扯远了。所以不论各路大佬还是成长...原创 2019-03-29 18:06:21 · 327 阅读 · 0 评论 -
初夏小谈:C&C++动态内存管理
一、C语言中的动态内存管理方式malloc/calloc/realloc三种开辟内存的方式 1.malloc函数原型 void* malloc(size_t size) 需要动态开辟内存空间时调用malloc函数,可以在堆上开辟出一块连续的内存空间,并且返回指向这一块内存的指针。来满足程序的需求。 1.2.在用malloc函数开辟空间时应注意:申请...原创 2019-03-26 13:14:34 · 257 阅读 · 0 评论 -
初夏小谈:设计模式之单例模式
一、何为设计模式? 所谓设计模式就是一种被反复使用,被频繁使用的代码经验的总结。设计模式的出现使得代码更容易被理解,保证了代码的可靠性。它让代码变得工程化。就如打仗用的兵书一样(孙子兵法)。二、单例模式 单例模式就是一个类只能创建一个对象。这种模式可以确保一个类只有一个对象,不能再创建其它对象。并且会提供一个可以访问它的全局访问点。只要有程序需要就会调用它。...原创 2019-03-22 22:11:17 · 227 阅读 · 0 评论 -
初夏小谈:你不知道的malloc(0)
在之前整理动态内存管理的知识时发现这样一个有意思的问题就是malloc(0),那么指向它的指针是空吗?还是什么?另外这片空间的大小到底是多少呢?今天专门针对这个问题进行了详细的研究。发现malloc(0)是一个有效的分配内存的方法,但是它仅仅是返回一个指向一个未被使用的空间的地址,并且这块空间大小是0神奇吧。这就好比刻度尺上的刻度一样,我们量东西时会通过两个刻度之间的差距来说明它...原创 2019-03-27 15:18:02 · 393 阅读 · 0 评论 -
初夏小谈:C/C++打造独具一格的相册---小项目
上一周我用C尝试制作一个可视化相册,这个相册使用了很多以前没有用到的东西,例如如何捕捉鼠标,设置鼠标监听器,如何设置按钮,如何存放图片的位置等等。制作相册项目:需要这样几个流程:1:加载资源 2:设置按钮 ...原创 2019-04-08 11:26:49 · 1539 阅读 · 5 评论 -
初夏小谈:经典游戏之别踩白块小游戏---小项目(C/C++打造)(1.0.01)
对于一个酷玩游戏和更喜欢设计游戏的人来说,能够自己编写一款比较有意义的经典游戏是一件多么爽的事情,在编程的行业里,最大的成就感莫过于全球大部分人都超级热爱自己的团队设计的软件并且爱不释手。这个目标真是过于远大,但还是要有的,万一实现了呢呵呵。 对于一个热爱玩游戏的我却更倾向于去打造一款具有创新性和健康积极的游戏。从小接触穿越火线就越发地认为游戏行业定会火爆与90后的年...原创 2019-04-13 00:45:43 · 1602 阅读 · 2 评论 -
初夏小谈:vector中迭代器失效问题
在模拟vector中会发生一种错误,程序崩溃。经过调试发现当使用迭代器时当指向的空间发生扩容后,在对用迭代器指向的空间进行解引用时会发生程序崩溃。在vector中,我们知道迭代器可以看作是原生态的指针,那么对指针进行解应用发生崩溃,就说明了对一块不属于当前指针的空间进行了解引用。在vector中使用迭代器发生崩溃会存在两种情况:一、根据上面所说的情况就可以总结为:当容量发生改变时就有可...原创 2019-04-20 19:04:38 · 421 阅读 · 0 评论 -
初夏小谈:vector的模拟实现(二)解决浅拷贝问题
上次实现的vector中存在这样的问题:就是在扩容中用memcpy来进行元素的拷贝,但是它会拷贝数据的位置,到另一块空间中。这样在后面的释放原来的空间后,这一份资源就会被释放,从而这块新空间指向的资源将会失效。程序就会发生崩溃。所以就进行深拷贝。代码如下:#include<iostream>#include<vector>using namespace ...原创 2019-04-20 19:29:28 · 509 阅读 · 0 评论 -
初夏小谈:vector的模拟实现
vector是一种数据的序列容器,它的大小是可以改变的。它和数组相似,都采用连续的存储空间来存储元素。所以他可以像数组一样高效的进行对元素的各种访问操作。它比数组更加灵活,可以自动根据需要动态改变大小。vector在本质上是动态分配数组来存储它的元素,当有元素被存进来或者改变有效元素个数以及扩容都有可能重新分配合适的空间,再将所有元素搬进来,时间代价比较高。vector分配空间的策略:v...原创 2019-04-13 16:39:16 · 268 阅读 · 0 评论 -
初夏小谈:模拟实现list以及list与vector的区别
list容器在底层使用双向链表实现的。数据存在每个节点中,并且每个结点还有两个空间分别存放两个指针用来找寻它的前后节点。在C+11中还引入了forward_list它的底层是单链表实现的。在只实现尾插,头插头删时比list更加高效。在list还会分配一些额外空间来保存结点的相关联信息。list基本接口:一、在list中构造有四种分别是:1.构造空list。2.构造N个值为da...原创 2019-04-25 19:50:33 · 304 阅读 · 0 评论 -
初夏小谈:类和对象(一)
类?什么是类? 在了解什么是类之前,先来了解一下C语言struct,C语言由于它是面向过程的,它更多的关注求解一个问题的过程,即步骤。在C语言的struct结构体中是不能定义函数的,它只能定义变量。而在C++中,它是基于面向对象的。它关注更多的是对象。它在处理一个问题时,是把一个问题拆分成几个对象来做。而不像C语言那样,一步下来该做哪一步地执行。一、类的概念:所以在C...原创 2019-03-14 19:58:53 · 326 阅读 · 0 评论