自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

jasscical's blog

jasscical学习成长记录

  • 博客(30)
  • 资源 (1)
  • 收藏
  • 关注

原创 (LeetCode_树_难度简单_107题)_03层次遍历二叉树(自顶向上)

给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7],返回其自底向上的层次遍历为:[[15,7],[9,20],[3]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-level-order-traversal-ii解题思路总体思路:求深度 + 一层一层递归1.104题求深度2.用d

2020-06-28 17:12:58 127

原创 (LeetCode_树_难度简单_104题)_02求二(N)叉树的深度

给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度3 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/** * Defin...

2020-06-28 14:57:19 128

原创 (LeetCode_树_难度中等_16题)_01数组三数和最接近所给target

给定一个包括n 个整数的数组nums和 一个目标值target。找出nums中的三个整数,使得它们的和与target最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/3sum-closestclas...

2020-06-25 10:54:05 331

原创 (C++笔记)_24预处理器

C++预处理器预处理器是一些指令,指示编译器在实际编译之前所需完成的预处理。所有的预处理器指令都是以井号(#)开头,只有空格字符可以出现在预处理指令之前。预处理指令不是 C++ 语句,所以它们不会以分号(;)结尾。我们已经看到,之前所有的实例中都有#include指令。这个宏用于把头文件包含到源文件中。C++ 还支持很多预处理指令,比如 #include、#define、#if、#else、#line 等,让我们一起看看这些重要指令。#define 预处理#define 预处理...

2020-06-17 10:04:52 131

原创 (C++笔记)_23命名空间

命名空间假设这样一种情况,当一个班上有两个名叫 Zara 的学生时,为了明确区分它们,我们在使用名字之外,不得不使用一些额外的信息,比如他们的家庭住址,或者他们父母的名字等等。同样的情况也出现在 C++ 应用程序中。例如,您可能会写一个名为 xyz() 的函数,在另一个可用的库中也存在一个相同的函数 xyz()。这样,编译器就无法判断您所使用的是哪一个 xyz() 函数。因此,引入了命名空间这个概念,专门用于解决上面同名冲突的问题,它可作为附加信息来区分不同库中相同名称的函数、类、变量等。使用了

2020-06-16 10:12:08 208

原创 (C++笔记)_22动态内存

动态内存了解动态内存在 C++ 中是如何工作的是成为一名合格的 C++ 程序员必不可少的。C++ 程序中的内存分为两个部分:栈:在函数内部声明的所有变量都将占用栈内存。 堆:这是程序中未使用的内存,在程序运行时可用于动态分配内存。很多时候,您无法提前预知需要多少内存来存储某个定义变量中的特定信息,所需内存的大小需要在运行时才能确定。如果您不再需要动态分配的内存空间,可以使用delete运算符,删除之前由 new 运算符分配的内存。new 和 delete 运算符double* ..

2020-06-16 09:21:34 162

原创 (C++笔记)_22异常处理

C++异常处理异常是程序在执行期间产生的问题。C++ 异常是指在程序运行时发生的特殊情况,比如尝试除以零的操作。异常提供了一种转移程序控制权的方式。C++ 异常处理涉及到三个关键字:try、catch、throw。throw:当问题出现时,程序会抛出一个异常。这是通过使用throw关键字来完成的。 catch:在您想要处理问题的地方,通过异常处理程序捕获异常。catch关键字用于捕获异常。 try:try块中的代码标识将被激活的特定异常。它后面通常跟着一个或多个 catch ...

2020-06-15 22:38:26 200

原创 (C++笔记)_21文件和流

iostream标准库,它提供了cin和cout如何从文件读取流和向文件写入流呢?用到 C++ 中另一个标准库fstream要在 C++ 中进行文件处理,必须在 C++ 源代码文件中包含头文件 <iostream> 和 <fstream>。即:#include <fstream>#include <iostream>打开文件在从文件读取信息或者向文件写入信息之前,必须先打开文件。ofstream和fstrea...

2020-06-15 22:23:50 124

原创 (C++笔记_面向对象)_19继承

访问控制和继承派生类可以访问基类中所有的非私有成员。因此基类成员如果不想被派生类的成员函数访问,则应在基类中声明为 private。我们可以根据访问权限总结出不同的访问类型,如下所示:访问 public protected private 同一个类 yes yes yes 派生类 yes yes no 外部的类 yes no no 一个派生类继承了所有的基类方法,但下列情况除外:基类的构造函数、析构...

2020-06-15 21:55:24 206

原创 (C++笔记_面向对象)_20重载

C++ 重载运算符和重载函数C++ 允许在同一作用域中的某个函数和运算符指定**多个定义**,分别称为函数重载和运算符重载。重载声明是指一个与之前已经在该作用域内声明过的函数或方法**具有相同名称的声明**,但是它们的**参数列表和定义(实现)不相同。**C++ 中的函数重载在同一个作用域内,可以声明**几个功能类似的同名函数**,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同。**不能仅通过返回类型的不同**来重载函数。下面的实例中,同名函数 print() 被用于输

2020-06-15 21:55:12 95

原创 数组、链表各自的优缺点

1.数组优点:随机访问快缺点:插入删除比较慢2.链表优点:它允许快速的插入和删除缺点:随机访问却比较慢

2020-06-15 21:54:32 191

原创 (C++笔记_面向对象)_18this 指针类的静态成员

1.C++类的静态成员我们可以使用static关键字来把类成员定义为静态的。当我们声明类的成员为静态时,这意味着无论创建多少个类的对象,静态成员都只有一个副本。静态成员在类的所有对象中是共享的。如果不存在其他的初始化语句,在创建第一个对象时,所有的静态数据都会被初始化为零。我们不能把静态成员的初始化放置在类的定义中,但是可以在类的外部通过使用范围解析运算符::来重新声明静态变量从而对它进行初始化,如下面的实例所示。下面的实例有助于更好地理解静态成员数据的概念:#include &...

2020-06-11 21:47:49 190

原创 (C++笔记_面向对象)_17this 指针

C++this 指针在 C++ 中,每一个对象都能通过this指针来访问自己的地址。this指针是所有成员函数的隐含参数。因此,在成员函数内部,它可以用来指向调用对象。友元函数没有this指针,因为友元不是类的成员。只有成员函数才有this指针。下例子中,this指针int compare(Box box) { return this->Volume() > box.Volume(); }完整实例如下:#in...

2020-06-11 21:32:36 109

原创 C++笔记_面向对象)_16内联函数

C++内联函数C++内联函数是通常与类一起使用。如果一个函数是内联的,那么在编译时,编译器会把该函数的代码副本放置在每个调用该函数的地方。对内联函数进行任何修改,都需要重新编译函数的所有客户端,因为编译器需要重新更换一次所有的代码,否则将会继续使用旧的函数。(这会导致效率低下问题)如果想把一个函数定义为内联函数,则需要在函数名前面放置关键字inline,在调用函数之前需要对函数进行定义。如果已定义的函数多于一行,编译器会忽略 inline 限定符。在类定义中的定义的函数都是内联函数,即...

2020-06-11 15:50:13 112

原创 C++笔记_面向对象)_15友元函数、友元类

C++友元函数类的友元函数在类的外部定义 ,但有权访问类的所有私有(private)成员和保护(protected)成员。尽管友元函数的原型有在类的定义中出现过,但是友元函数并不是成员函数。假如A中声明B是它的友元,则B可以访问A的一切成员。简记:A说B是我兄弟,家里的东西随便拿哈(有点引狼入室的感觉)友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类,在这种情况下,整个类及其所有成员都是友元。如果要声明函数为一个类的友元,需要在类定义中该函数原型前使用关键字..

2020-06-11 15:40:54 133

原创 (C++笔记_面向对象)_14拷贝构造函数

#include <iostream> using namespace std; class Line{ public: int getLength( void ); Line( int len ); // 简单的构造函数 Line( const Line &obj); // 拷贝构造函数 ~Line(); // 析构函数 private:.

2020-06-11 15:23:38 206

原创 (C++笔记_面向对象)_14类构造函数 & 析构函数

C++类构造函数 & 析构函数类的构造函数类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置初始值。分为带参数以及不带参数的构造函数不带#include <iostream> using namespace std; class Line{ public: void setLength( double.

2020-06-11 14:38:49 150

原创 (C++笔记_面向对象)_13类访问修饰符public\private\protected

1.C++类访问修饰符数据封装是面向对象编程的一个重要特点,它防止函数直接访问类类型的内部成员。类成员的访问限制是通过在类主体内部对各个区域标记public、private、protected来指定的。关键字public、private、protected称为访问修饰符。一个类可以有多个 public、protected 或 private 标记区域。每个标记区域在下一个标记区域开始之前或者在遇到类主体结束右括号之前都是有效的。成员和类的默认访问修饰符是 private。2.公...

2020-06-11 11:30:44 277

原创 (C++笔记_面向对象)_12类成员函数

C++类成员函数类的成员函数是指那些把定义和原型写在类定义内部的函数,就像类定义中的其他变量一样。类成员函数是类的一个成员,它可以操作类的任意对象,可以访问对象中的所有成员。看看之前定义的类 Box,现在我们要使用成员函数来访问类的成员,而不是直接访问这些类的成员:class Box{ public: double length; // 长度 double breadth; // 宽度 double height; .

2020-06-11 11:06:15 187

原创 (C++笔记_面向对象)_11类和对象

1.C++ 类定义它定义了类的对象包括了什么,以及可以在这个对象上执行哪些操作。类定义是以关键字class开头,后跟类的名称。类的主体是包含在一对花括号中。类定义后必须跟着一个分号或一个声明列表。例如,我们使用关键字class定义 Box 数据类型,如下所示:class Box{ public: double length; // 盒子的长度 double breadth; // 盒子的宽度 double height; /...

2020-06-11 10:55:42 212

原创 (C++笔记)_10结构体

1.C++数据结构C/C++ 数组允许定义可存储相同类型数据项的变量,但是结构是 C++ 中另一种用户自定义的可用的数据类型,它允许您存储不同类型的数据项。结构用于表示一条记录,假设您想要跟踪图书馆中书本的动态,您可能需要跟踪每本书的下列属性:Title :标题 Author :作者 Subject :类目 Book ID :书的 ID2.定义结构为了定义结构,您必须使用struct语句。struct 语句定义了一个包含多个成员的新的数据类型,struct 语句的格式如下:...

2020-06-11 10:41:29 156

原创 (C++笔记)_09日期时间

C++日期 & 时间C++ 标准库没有提供所谓的日期类型。C++ 继承了 C 语言用于日期和时间操作的结构和函数。为了使用日期和时间相关的函数和结构,需要在 C++ 程序中引用 <ctime> 头文件。有四个与时间相关的类型:clock_t、time_t、size_t和tm。类型 clock_t、size_t 和 time_t 能够把系统时间和日期表示为某种整数。结构类型tm把日期和时间以 C 结构的形式保存,tm 结构的定义如下:struct tm { ...

2020-06-10 22:02:13 136

原创 (C++笔记)_08引用

1.C++引用引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。C++ 引用 vs 指针引用很容易与指针混淆,它们之间有三个主要的不同:不存在空引用。引用必须连接到一块合法的内存。 一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。 引用必须在创建时被初始化。指针可以在任何时间被初始化。总结:指针比较自由C++ 中创建引用试想变量名称是变量附属在内存位置..

2020-06-10 21:48:26 141

原创 (C++笔记)_07指针类

1.变量地址与访问了解什么是内存地址 如何访问它每一个变量都有一个内存位置,每一个内存位置都定义了可使用连字号(&)运算符访问的地址,它表示了在内存中的一个地址。请看下面的实例,它将输出定义的变量地址:#include <iostream> using namespace std; int main (){ int var1; char var2[10]; cout << "var1 变量的地址: "; cout <

2020-06-10 21:00:37 110

原创 (C++笔记)06_字符串

1.C++字符串C++ 提供了以下两种类型的字符串表示形式:C 风格字符串 C++ 引入的 string 类类型C 风格字符串C风格的字符串起源于 C语言,并在 C++ 中继续得到支持。字符串实际上是使用null字符 '\0' 终止的一维字符数组。因此,一个以 null 结尾的字符串,包含了组成字符串的字符。下面的声明和初始化创建了一个 "Hello" 字符串。由于在数组的末尾存储了空字符,所以字符数组的大小比单词 "Hello" 的字符数多一个。char greetin...

2020-06-10 20:41:42 100

原创 (C++笔记)05_数字类

C++ 随机数在许多情况下,需要生成随机数。关于随机数生成器,有两个相关的函数。一个是rand(),该函数只返回一个伪随机数。生成随机数之前必须先调用srand()函数。下面是一个关于生成随机数的简单实例。实例中使用了time()函数来获取系统时间的秒数,通过调用 rand() 函数来生成随机数:主要是想记录:rand,srand在<cstdlib>中实例#include <iostream>#include <ctime>#inc...

2020-06-10 20:09:56 96

原创 (C++笔记)__04运算符

1.算术运算符下表显示了 C++ 支持的算术运算符。假设变量 A 的值为 10,变量 B 的值为 20,则:运算符 描述 实例 + 把两个操作数相加 A + B 将得到 30 - 从第一个操作数中减去第二个操作数 A - B 将得到 -10 * 把两个操作数相乘 A * B 将得到 200 / 分子除以分母 B / A 将得到 2 % 取模运算符,整除后的余数 B % A 将得到 0 ++ 自增

2020-06-09 11:11:12 118

原创 (C++笔记)__03存储类

1.register 存储类register存储类用于定义存储在寄存器中而不是 RAM 中的局部变量。这意味着变量的最大尺寸等于寄存器的大小(通常是一个词),且不能对它应用一元的 '&' 运算符(因为它没有内存位置)。{ register int miles;}寄存器只用于需要快速访问的变量,比如计数器。还应注意的是,定义 'register' 并不意味着变量将被存储在寄存器中,它意味着变量可能存储在寄存器中,这取决于硬件和实现的限制。2.static 存储类s...

2020-06-09 10:11:42 164

原创 (C++笔记)__02修饰符类型

C++修饰符类型C++ 允许在char、int 和 double数据类型前放置修饰符。修饰符用于改变基本类型的含义,所以它更能满足各种情境的需求。下面列出了数据类型修饰符:signed unsigned long short修饰符signed、unsigned、long 和 short可应用于整型,signed和unsigned可应用于字符型 long可应用于双精度型。修饰符signed和unsigned也可以作为long或short修饰符的前缀...

2020-06-09 09:30:54 106

原创 (C++笔记)__01常量

1.整数常量可以是十进制、八进制或十六进制的常量。前缀指定基数:0x 或 0X 表示十六进制, 0 表示八进制, 不带前缀则默认表示十进制。整数常量也可以带一个后缀,后缀是 U 和 L 的组合,U 表示无符号整数(unsigned),L 表示长整数(long)。后缀可以是大写,也可以是小写,U 和 L 的顺序任意。下面列举几个整数常量的实例:212 // 合法的 215u // 合法的 0xFeeL // 合法的 078 // 非法的:8 不是八进制的数字 032UU // 非

2020-06-09 09:18:01 173

black.vssettings

黑色高亮的代码编辑风格!在vs2010 工具(Tools)->导入导出设置(import and export settings),导入这个文件就可以开始疾风操作!

2019-09-27

空空如也

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

TA关注的人

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