![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
学习随记
文章平均质量分 75
记录阅读时的理解,或是复习时的小结。
星河有鱼
这个作者很懒,什么都没留下…
展开
-
C++ Primer Plus 随记(第九章)内存模型和名称空间
1、单独编译头文件:同一个文件只能将同一个头文件包含一次。#ifndef ***_H_ #define ***_H_ ... #endif // 防止上述问题2、存储持续性、作用域和链接性自动存储持续性:函数定义中声明的变量。 执行时创建,执行结束时释放 无链接性(仅可在当前函数/代码块中访问)静态存储持续性: static 关...原创 2021-03-07 22:18:17 · 152 阅读 · 1 评论 -
C++ Primer Plus 随记(第八章)函数探幽
1、内联函数:编译器将使用相应的代码替换函数调用。 --优点:运行速度稍快 --缺点:代码膨胀内联函数:一、在函数声明前加上关键字inline;二、在函数定义前加上关键字inline。无法作为内联函数的原因:一、内联函数不能递归;二、函数体过大。内联与宏: C语言使用预处理器语句 #define 提供宏--内联代码的原始实现(实际上使用 文本替换来实现)。 #define SQUARE(X) ((X)*(X)); 使用c语言的宏执行可以考虑利用C++内联函数进行替...原创 2021-03-03 21:40:47 · 203 阅读 · 1 评论 -
Effective C++ 随记 第八章(定制 new 和 delete )第九章(杂谈)
条款49:了解 new_handler的行为1:让更多的内存可被使用——开始执行时分配一大块内存,当new_handler被调用时将内存释还给程序使用。2:安装另一个new_handler——当前的new_handler无法取得更大的内存,且知道哪一个有能力取得更大的内存,安装新的new_handler。3:卸除new_handler——将null传递给set_new_handler。没有安装new_handler时,new会在内存分配失败时抛出异常。4:抛出bad_alloc(此类)的异常原创 2021-02-25 16:52:59 · 103 阅读 · 0 评论 -
Effective C++ 随记 第七章(模板与泛型编程)
条款41:了解隐式接口和编译期多态请记住:1):条款42:了解 typename 的双重意义请记住:1):条款43:学习处理模板化基类内的名称请记住:1):条款44:将与参数无关的代码抽离 template请记住:1):条款45:运用成员啊还能输模板接受所有兼容类型请记住:1):条款46:需要转换类型时请为模板定义非成员函数请记住:1):条款47:请使用 trait class 表现类型信息...原创 2021-02-25 16:49:02 · 103 阅读 · 0 评论 -
Effective C++ 随记 第六章(继承于面向对象设计)
条款32:确定你的 public 继承塑造出 is-a 关系请记住:1):”public 继承“意味着 is-a。适用于 base class 身上的每一件事一定也适用于 derived class。因为每一个derived class 对象也是一个 base class 对象。条款33:避免遮掩继承而来的名称、由于 名称 的作用域原因,没有重载的同名成员会使得 base class 对象内的名称被遮掩。virtual void mf1() //转交函数 { base...原创 2021-02-24 21:20:50 · 129 阅读 · 0 评论 -
C++ Primer Plus 随记(第五、六、七章)
1、for循环:① 设置初始值;② 执行测试,判断循环是否继续执行;③ 执行循环体;④ 更新用于测试的值2、x+15 表达式不会修改 x 的值,将计算出一个新的值。++x+15 将会使得 x 的值加 1。3、递增运算符(++)和递减运算符(--) 实现简约方便的变量加减 1。 其前缀版本和后缀版本的区别在于:前缀“使用前修改”,后缀“使用后修改。 如果在同一条语句中对同一值多次递增或者递减可能造成非预期的结果。前缀版本:将值加 1 然后返回;后缀版本先复制一个副本并将其加...原创 2021-02-07 22:42:43 · 112 阅读 · 0 评论 -
Effective C++ 随记 第五章(实现)
条款26:尽可能延后变量定义式的出现时间循环体内的变量定义:A)循环开始之前;B)循环内部1)赋值成本比“构造+析构”成本低 -> 使用方式A;2)代码对效率高度敏感 -> 使用方式A;3)其它情况 -> 使用方式B。请记住:1):尽可能延后变量定义式的出现,可增加程序的清晰度并改善程序的效率。条款27:尽量少做转型动作C风格类型转换: T(expression) 、(T) expression // 将 expression 类型转换为...原创 2021-02-07 21:55:08 · 121 阅读 · 0 评论 -
Effective C++ 随记 第四章(设计与声明)
1、内存原创 2021-02-07 21:52:44 · 108 阅读 · 0 评论 -
Effective C++ 随记 第三章(资源管理)
动态分配内存、文件描述器、互斥锁、图形界面中的字型和笔刷、数据库连接、网络sockets等。条款13: 以对象管理资源1):获得资源后立即放进管理对象2):管理对象运用析构函数确保资源被释放请记住:1):为防止资源泄露,使用RALL对象,在构造函数和析构函数中获取、释放资源。2):两个常被使用的 RALL class 分别为 tr1::shared_ptr 和 auto_ptr。前者通常为较佳选择,其 copy 行为比较直观。使用 auto_ptr ,复制动作会...原创 2021-02-07 21:50:21 · 156 阅读 · 1 评论 -
Effective C++ 随记 第二章(构造/析构/赋值运算)
类中存在构造函数、析构函数、copy函数和copy赋值操作符;用以确保对象的初始化、摆脱旧对象并被清理、赋予对象新值。条款5:了解C++默默编写并调用哪些函数请记住:1):编译器可以暗自为 class 创建 default构造函数、copy构造函数、 copy赋值操作符及析构函数条款6:若不想使用编译器自动生成的函数,应明确拒绝请记住:1):为驳回编译器自动提供的机能,可以将响应的成员函数声明为 private 并不予实现。条款7:为多态基类声明 vir...原创 2021-02-07 21:49:24 · 99 阅读 · 0 评论 -
Effective C++ 随记 第一章(让自己习惯C++)
条款1:C++为一个语言联邦1):C2):Object-Oriented C++3):Template C++4):STL内置函数类型时, pass-by-vale 通常比 pass-by-reference 高效;用户自定义的构造、析构函数、template函数中 pass-by-reference-const 更高效。请记住:1):C++高效编程守则取决于你使用C++的哪一个部分。条款2:尽量以const,enum,inline替换 #defi...原创 2021-02-07 21:47:49 · 119 阅读 · 0 评论 -
现代操作系统随记 第二章(进程与线程)
1、进程:操作系统最核心的概念是进程。进程是操作系统提过的最古老也是最重要的抽象概念之一。一个进程是一个正在执行程序的实例,包括程序计数器、寄存器和变量的当前值。2、伪并行:任何多道程序设计系统中,CPU由一个进程快速切换到另一个进程,每个进程各运行及时或者几百毫秒。实际上每一瞬间CPU只运行一个进程,但是1秒内可以运行多个进程。硬件并行:多处理器系统中有着两个或者多个CPU共享同一物理内存,可以同时运行多个进程。3、进程的创建:4个主要事件会导致进程的创建1)系统初始化2)正在原创 2020-12-24 20:58:48 · 251 阅读 · 1 评论 -
二叉树 之 C++实现(三叉链表存储结构)
满二叉树和完全二叉树适合顺序存储结构,一般二叉树比较适合链式存储结构。最差情况下,一个深度k只有k个结点的树需要长度为的顺序存储空间,链式存储空间仅需要k个节点的存储空间。下面是链式存储的两种结点结构: 上- 含两个指针的结点结构(组成的链表被称为二叉链表);下- 含三个指针的结点结构(三叉链表)。(其中 Lchild:指向左结点的指针 Parent:指向双亲结点的指针 Rchild:指向右结点的指针)Lchild data Rchild Lchi...原创 2020-05-13 17:09:54 · 2142 阅读 · 2 评论 -
广义表一般概念
广义表也是一种特殊的线性表,与线性表相比表中的数据元素可以是具体数据也可以是列表。记住:LS=(a1,a2,...,an)。广义表中ai为具体数据被称为 原子,广义表中ai为列表被称为 子表。若作为广义表中子表是该广义表本身,可称广义表是递归的,此广义表实际上是无限的列表。若广义表非空,表中的第一个元素 a1 为表头(Head),其余的元素(a2,...,an)为表尾(Tail)。因此表头可以为原子或者子表,表尾一定为子表。若LS=(),该广义表为空表。若LS=(...原创 2020-05-12 20:16:38 · 1118 阅读 · 0 评论 -
栈与队列及实现
栈申请空间的删除仅需要将栈的基指针释放即可原创 2020-05-12 16:38:24 · 138 阅读 · 0 评论 -
struct 和 typedef struct ,类内结构体
结构体是由一系列具有相同类型或不同类型的人为定义的数据构成的数据集合。c语言中定义方式1)先定义结构体,再定义结构体变量struct L_Node{ // struct L_Node 为结构体名 int data; char *next;};struct L_Node node; //node 为结构体变量2)定义结构体同时定义结构体变量struct L_Node{ // struct L_Node 为结构体名 int data; ...原创 2020-05-10 16:47:41 · 1054 阅读 · 1 评论 -
线性表顺序表示、链式表示实现方法及其异同点
线性表是最常用且最简单的一种数据结构,按存储单元排列可分为顺序表示和链式表示两种方式。本文采用C++实现两种表示方法。目录顺序表示和链式表示的区别:创建方式:时间复杂度:顺序表示和链式表示的相同点:删除内存空间:代码实现:顺序表示方法:结构体定义初始化增加元素删除元素销毁列表链式表示方法结构体定义初始化增加节点删除节点显示链表销毁链表顺序表示和链式表示的区别: 创建方式: 顺序表示方法单次创建多个存储单元,相邻原创 2020-05-10 15:44:37 · 1188 阅读 · 0 评论 -
malloc()函数和realloc()函数
base = (type *)malloc(type_t * type_size):分配长度为type_t * type_size字节的内存块,可存放type_t个type类型的变量。返回值:返回空指针NULL表示内存申请失败,如果分配成功则返回指向被分配内存的指针。参数:type 表示变量类型;type_t 宏定义的数值,表示需要存放的变量的数目;type_size表示变量需要的内存数量...原创 2020-05-06 17:18:05 · 427 阅读 · 0 评论 -
C/C++中点(对象成员)和箭头(指针)的区别
在C/C++中,如果函数的传入的实参为对象,在函数内部可以使用点来访问对象的成员变量。如果传入的实参为指针,使用“->”来调用实参中的对应参数。结构定义:typedef struct { ElemType *base; ElemType *top; int stackSize;}sqStack;对象定义:sqStack s;传入对象:in...原创 2020-05-06 16:49:20 · 917 阅读 · 0 评论 -
C++ Primer Plus 随记(第二、三、四章)
1.main() 函数程序入口,一般的可执行编程中必须存在且唯一的函数。在DLL(动态链接库)编程中可以不包含,但是调用DLL的程序一样需要 main() 函数。2.名称空间 namespaceusing namespace std; // 这局代码配合 # include <iostream> 使用,相当于全局可用 名称空间 std 。除此若存在自定义的名称空间,建议使用 std::cin 这类方式,避免不同命名空间的冲突。...原创 2020-11-04 11:23:04 · 208 阅读 · 0 评论