C++
驯鹿人
天道酬勤
展开
-
小Q在周末的时候和他的小伙伴来到大城市逛街,一条步行街上有很多高楼,共有n座高楼排成一行...----腾讯校园招聘
问题描述思路代码原创 2020-09-22 11:23:18 · 2439 阅读 · 1 评论 -
C++多线程编程(入门实例)
小白接触多线程,做个记录!!!原文入口转载 2020-09-17 16:00:40 · 139 阅读 · 0 评论 -
二叉树的前序/中序/后序遍历方法的递归与循环的实现
二叉树的前序/中序/后序遍历方法的递归与循环的实现对于二叉树的三种遍历方法, 递归方法实现起来简单,明白。但是效率不好,并且不安全,可能会栈溢出。循环的实现,肯定是基于栈的数据结构来实现,要复杂一些。代码如下:前序遍历的实现:// 前序遍历 ----基于递归void PreorderTraversal(BinaryTreeNode* pRoot_){ // 为空时,直接返回了 if (!pRoot_) return; std::cout &l.转载 2020-09-08 09:26:16 · 173 阅读 · 0 评论 -
矩阵中的d路径--剑指Offer(C++)
矩阵中地路径–回溯法(矩阵、递归)一、回溯法回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。许多复杂的,规模较大的问题都可以使用回溯法,有“通用解题方法”的美称。回溯算法实际上一个类似枚举的深度优先搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回(也就是递归返回),尝试别的路径。(详情介绍)二、问题描述请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的原创 2020-08-31 20:16:35 · 707 阅读 · 0 评论 -
《C++ Primer Plus》学习笔记——C++中关键词const的用法和作用
C++中关键词const的用法和作用1、声明常量,可以采用const声明常量。格式为:const VarType VarName=value;如:const int a=10;//const声明的为常量,在成熟中不可更改,即a=20这样的赋值操作不被允许。2、const也可以用来修饰函数的形参。被修饰的参数在函数中只允许读,不可修改。格式为:Int a=10;void show1(const int a){a=20;//操作不被允许cout<<a;}同样的,也可以用来原创 2020-07-01 12:57:31 · 216 阅读 · 0 评论 -
《C++ Primer Plus》学习笔记——文本I/O和文本文件(cin读取原理)
文本I/O和文本文件(cin读取原理)使用cin进行输入时,程序将输入视为一系列的字节,其中每个字节都被解释为字符编码(例如ASCII编码)。不管目标数据类型是什么,输入一开始都是字符数据——文本数据。然后,cin会负责将文本转换成其他类型。假设有如下输入行:(看一看使用不同数据类型的变量来存储时,cin是如何处理输入行的。)38.5 19.2①char数据类型char ch;cin>>ch;输入行中的第一个字符被赋给ch。在这里,第一个字符是数字3,其字符编码(二进制)被存储在原创 2020-05-29 12:10:10 · 372 阅读 · 0 评论 -
《C++ Primer Plus》学习笔记——带你了解字符函数库cctype
字符函数库cctypeC++从C语言继承了一个与字符相关的、非常方便的函数软件包,它可以简化诸如确定字符是否为大写字母、数字、标点符号等工作,这些函数的原型是在头文件cctype(老式风格中为ctype.h)中定义的。使用这些函数判断比使用逻辑运算符AND和OR方便,并且更通用。因为这些函数能适应各种字符的编码。下面是cctype软件包中的函数。char a=67;isalum(a)//如果参数是字母数字,即字母或数字,该函数放回trueisalpha(a)//如果参数是字母,放回trueisc原创 2020-05-29 07:19:14 · 196 阅读 · 0 评论 -
《C++ Primer Plus》学习笔记——类型别名typedef
类型别名typedefC++在为类型建立别名的方式有两种。使用预处理器#define A char这样,预处理器将在编译程序时用char替换所有的A,从而使A称为char的别名。使用关键字typedeftypedef char B;//通用格式:typedef typeName aliasName;例如,要让B_pointer成为char指针的别名,typedef char *B_pointer;需要注意的是:我也可以用#define A_pointer char *但两种方式是有原创 2020-05-28 10:28:08 · 362 阅读 · 0 评论 -
《C++ Primer Plus》学习笔记——自动存储、静态存储和动态存储
自动存储、静态存储和动态存储根据用于分配内存的方法,C++有3种管理数据内存的方式:自动存储、静态存储和动态存储(有时也叫作自由存储空间或堆)。在存在时间的长短方面,以这3种方式分配的数据对象各不相同。(C++11新增了第四种类型——线程存储,这里不做讨论。)自动存储在函数内部定义的常规变量使用自动存储空间,被称为自动变量,这意味着它们所属的函数被调用时自动产生,在该函数结束时消亡。**实际上,自动变量是一个局部变量,其作用域为包含它的代码块。**代码块是被包含在花括号中的一段代码。如果在某个代码块原创 2020-05-28 07:33:43 · 198 阅读 · 0 评论 -
数据结构与算法课程设计之五子棋(人机)
数据结构与算法课程设计之五子棋(人机)五子棋是全国智力运动会竞技项目之一,是一种两人对弈的纯策略型棋类游戏。通常双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成五子连线者获胜。这是我在大二下数据结构与算法课程设计的时候做的经典小游戏。如果仅仅做一个人人对战的五子棋(不联机)是非常简单的。这实际就是一个简单的界面设计,鼠标事件的响应以及五子连珠的判断问题。但我做了一个人机对战的五子棋。你下一子,电脑会下一子,谁先连成五子谁获得胜利。想要电脑足够智能(当然没有用到现在比较热门的机器学习和深度原创 2020-05-27 15:38:26 · 5311 阅读 · 0 评论 -
C++课程设计之我的小游戏欢乐小鱼
C++课程设计之我的小游戏欢乐小鱼这是我大一下学期做的程序,在这里仅为了记录一下,避免以后电脑出问题,文件丢失。C++课程设计通常都是要求两三周之内做一个C++语言的课程设计,有的学校老师会给每个学生安排题目,有的学校老师也允许自由选题。我们学校老师的要求就是可以自己选题,也可以选择老师给出的题目。我选择的是自己做一个有界面小游戏。这是我做的小游戏的登录界面,这并不是一个静态的界面,是有一个进入的界面的。整个程序有672行,用到了数据结构链表,思想比较简单。由于有相对比较漂亮的界面效果,所以需要原创 2020-05-27 14:52:01 · 1602 阅读 · 0 评论 -
《C++ Primer Plus》学习笔记——使用new来创建动态数组
使用new来创建动态数组在C++的使用过程中,我们可以通过创建数组的方式来管理同一类型的数据。声明一个数组的方式就必须知道数组的长度,如果我们并不知道数组的具体长度,我们就需要将数组的长度设置得足够大这必然会造成内存的浪费。因此,我们可以采用指针来创建动态数组。在编译时给数组分配内存被称为静态联编(static binding),意味着数组实在编译时加入到程序中的。但使用new时,如果在运行阶段需要数组,则创建它;如果不需要,则不创建。还可以在程序运行时选择数组的长度。这被称为动态联编(dynamic原创 2020-05-26 21:18:40 · 337 阅读 · 0 评论 -
《C++ Primer Plus》学习笔记——共用体union
共用体共用体(union)是一种数据格式,它能够存储不同的数据类型,但只能同时存储其中的一种类型。也就是说,结构体可以同时存储int、long和double,共用体只能存储int、long或double。共用体的句法与结构体相似,但含义不同。**共用体三字的共用重点在共用内存。**例如,请看下面的声明:union one4all{ int int_val; long long_val; double double_val;}可以使用one4all变量来存储int、long或double,条原创 2020-05-26 17:31:06 · 208 阅读 · 0 评论 -
《C++ Primer Plus》学习笔记——函数getline()和函数get()
在学习C++的时候,如果只是输入一个字符:char str;cin>>str;如果要输入一个字符串:const int Size=10;char str[Size];cin>>str;上面这种方式会在我们需要输入这样的字符串(“I am from China!”)时遇到问题。因为cin使用空白(空格、制表符、换行)来确定字符串的结束位置。所以如果要读入这样包含空格的字符串就需要使用到getline()函数或get()函数。那么这两个函数有什么区别呢?getlin原创 2020-05-26 16:16:22 · 272 阅读 · 0 评论 -
《C++ Primer Plus》学习笔记——char类型
char类型:字符型、小整型在我们学习C++的时候通常被强调char是字符型,存储容量为一个字节(8位)。在定义char类型的变量后,为其赋值采用的是单引号括起来的的一个字符。比如:char c='A';cou<<c<<endl;那么上面定义的char类型c所标记的1个字节的内存中存储的到底是什么呢?我们知道计算机存储数据的方式都是以二进制的方式存储的。所以,c所存储的值实际上是字符’A’的ASCII码67的二进制值。我们同样可以采用以下方式给c赋值:char c=67;原创 2020-05-25 19:03:28 · 198 阅读 · 0 评论 -
C++中的无符号整型0-1问题
一般来说,让小学生做一个0-1的问题,她很容易得出的答案是-1。对于计算机,如果0,1都是整型即int,计算机计算得到的结果也是-1,是没错的。如果对计算机组成原理不了解的话,可以看看这位博主的介绍:计算机中减法的实现原理对于无符号整型既unsigned int,它是32位的,范围是0~4294967296(2的32次方)。所以,在c++中,如果我们定义了一个unsigned int k=0;在用k-1,得到的结果就是4294967295。...原创 2020-05-19 22:48:51 · 5189 阅读 · 0 评论 -
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。--剑指offer(C++)
题目: 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。在做这个问题之前,让我们看看简化版题目的做法。简化版题目: 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。分析: 对于这样的问题,采用递归求解是最佳方法。通过分析很容易得到下表。台阶数n跳法0011223345……n?表1分析表1,我们原创 2020-05-18 21:23:29 · 1372 阅读 · 0 评论 -
用两个栈来实现一个队列,完成队列的push和pop操作。 队列中的元素为int类型。
**题目描述:**用两个栈来实现一个队列,完成队列的push和pop操作。 队列中的元素为int类型。**思路:**栈是后进先出,队列是后进后出。堆栈1中元素出栈,出栈的元素进入堆栈2,这样就使得堆栈 1和堆栈2中的元素的顺序恰好是相反的。(比如堆栈1中元素顺序为{5 4 3 2 1},那堆栈2中元素顺序必然为{1 2 3 4 5})利用这个性质就可以完成队列的push和pop操作。堆栈1堆栈2实际队列511422333244155原创 2020-05-17 22:36:47 · 255 阅读 · 0 评论