自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 《Effective C++》第三版——构造、析构、赋值运算

注意:《Effective C++》不涉及任何 C++11 的内容,因此其中的部分准则可能在 C++11 出现后有更好的实现方式。如果某个类没有声明 copy 构造函数、copy assignment 操作符、析构函数,编译器会声明它们;如果某个类没有声明任何构造函数,编译器会声明默认构造函数。编译器声明的这些函数,只有在被调用的时候才会被创建。C++11 引入了 ,似乎更适合完成这个工作。因为具有多态性质的继承体系中,我们常常使用 base 指针指向 derived 对象,如果此时 base class

2024-09-18 21:03:15 768

原创 《Effective C++》第三版——让自己习惯C++

所以无法确保。

2024-09-18 21:02:17 736

原创 Lambda表达式详解

Lambda 表达式是 C++11 引入的新特性。Lambda 是一个可以定义在函数内部的、的代码单元,可以将其理解为。Lambda 表达包含(形式为尾指返回类型)和参数列表和返回类型可以省略:省略参数列表代表参数列表为空;省略返回类型,编译器将根据return语句返回的表达式类型推断返回类型,如果没有return语句则返回类型为void。定义一个 Lambda 表达式时,编译器生成一个与之对应的、新的、未命名的,这个类重载了调用运算符,并指定其为const。

2024-08-28 20:22:39 356

原创 《廖雪峰Java教程》——面向对象基础(2)

需要按照包结构将 Java 文件组织起来,所有 Java 文件的目录层次要与包的层次对应。文件中均为完整类名,故编译过程中遇到一个简单类名时,按照当前。,可以用于解决类名冲突,每个类都属于一个包,完整的类名是。JVM 只看完整类名。包可以是多层结构,例如。需要注意的是,包没有父子关系,例如。这部分暂时省略,因为不知道有什么用。先访问类,再访问类内的字段或方法。局部变量的作用域与 C++ 类似。修饰的字段和方法就是包作用域。Java 编译器编译出的。时,编译器会自动我们。

2024-08-28 20:21:24 400

原创 《廖雪峰Java教程》——面向对象基础(1)

实际上判断一个变量所指向的实例是否是指定类型,或者这个类型的子类。如果一个父类不允许子类对它的某个方法进行覆写,可以把该方法标记为。Java只允许一个class继承自一个类,因此,一个类有且仅有。在Java中,创建对象实例的时候,先初始化字段,例如,向下转型能否成功由变量实际所指的类型决定,可以使用。可以让父类型的引用变量指向子类型的实例。,然后执行构造方法的代码进行初始化。类没有无参的构造方法,所以编译失败。基本类型值传递,引用类型引用传递。的动态调用,而非变量的声明类型。类,任何类都会继承自某个类。

2024-07-02 11:01:05 373

原创 《廖雪峰Java教程》——Java快速入门

Java介于编译型语言和解释型语言之间。Java是将代码编译成一种“字节码”,然后,针对不同平台编写虚拟机,不同平台的虚拟机负责加载字节码并执行,这样就实现了“一次编写,到处运行”的效果。

2024-07-02 11:00:10 783

原创 深度学习环境搭建

因为一些原因,我需要更换一台新的服务器来跑深度学习。这篇文章记录了我在新的远程服务器上搭建深度学习环境的过程。

2024-03-15 09:10:01 535

原创 《C++ Primer》第15章 面向对象程序设计(一)

*面向对象程序设计(object-oriented programming)**的核心思想是数据抽象、继承和动态绑定。我们首先完成Quotepublic:private:// 书籍的ISBN编号protected:// 书籍的原价基类通常都应该定义一个虚析构函数,即使该函数不执行任何实际操作。public:private:// 适用折扣的最小购买量// 折扣额else {Bulk_quote从Quote继承了isbn函数和bookNoprice。

2024-01-18 10:47:53 664

原创 算法自学__三分法

我们还可以取区间中点两边附近的两个点,这样可以让在每次循环后让区间长度变为原长度的。不难发现,上述做法在每次循环中会让区间长度变为原长度的。,然后比较这两个点的函数值。内取得,因为如果答案在区间。函数,如何求得极值点?,说明极值点一定在区间。函数的值时往往需要采用。内取得,则一定有函数。

2024-01-18 10:47:12 445

原创 《C++ Primer》第14章 重载运算与类型转换(二)

标准库定义了一组表示算术运算符、关系运算符、逻辑运算符的类,每个类分别定义了一个执行命名操作的调用运算符。这些类定义在头文件functionalpublic:private:SmallIntsi = 4;si + 3;// si被隐式转换成int,然后执行整型加法编译器一次只能执行一个用户定义的类型转换,但隐式的用户定义类型转换可以置于标准类型转换的之前或之后,并与其一起使用。因此,我们可以将任何算术类型传递给SmallInt的构造函数,也能将SmallInt对象转换成int。

2024-01-11 10:58:29 935

原创 《C++ Primer》第14章 重载运算与类型转换(一)

/ curr为无符号类型,如果curr为0,--后将得到一个很大的正数--curr;

2024-01-11 10:57:47 481

原创 《C++ Primer》第13章 拷贝控制(三)

private:// 确保容器有足够的空间容纳新元素// 在first_free指向的元素中构造s的副本// 分配大小合适的空间// 返回拷贝的开始位置和尾后位置// 保证传递给deallocate的是一个先前由allocate返回的指针p!= elements;) {// 逆序销毁旧元素free();// 允许自赋值free();

2023-12-20 19:52:25 910

原创 《C++ Primer》第13章 拷贝控制(二)

对于行为类似指针的类,我们要拷贝的是指针本身,而不是它指向的string。析构函数不能单方面地释放所关联string,只有当最后一个指向string的HasPtr销毁时,它才可以释放String。令一个类展现类似指针的行为最好的方法是用shared_ptr来管理类中的资源。但是,有时我们希望直接管理资源。此时,我们可以使用引用计数。int i;++*rhs.use;delete ps;delete use;

2023-12-15 11:12:59 429

原创 LeetCode每日一题——2132.用邮票贴满网格图

由于本人之前对于差分的理解不是很到位,所以这里展开说一下。由于题目没有限制放入邮票的数量,也允许邮票相互重叠,所以我们应该。,最后,我们检查是否每个空格子都被邮票覆盖即可。不得不承认,我求二维前缀和、二维差分的代码极其丑陋。内被占据格子的数量,那么对与我们要粘贴邮票的范围。如果在满足上述要求的前提下,可以放入邮票,请返回。我们想将邮票贴进二进制矩阵中,且满足以下。表示当前格子上的邮票数量,那差分数组。为基准粘贴邮票,则该邮票的覆盖范围是。对于第一个问题,我们可以使用。对于第二个问题,我们可以使用。

2023-12-14 15:30:39 699

原创 《算法竞赛入门到进阶》——图论

bfs 和 dfs。

2023-12-13 21:17:09 982

原创 《算法竞赛入门到进阶》——动态规划

这部分主要涉及背包问题、最长公共子序列、最长递增子序列等问题。由于这些经典问题在之前的学习中已经涉及,所以不在此赘述。

2023-12-13 20:44:00 960

原创 《C++ Primer》第13章 拷贝控制(一)

在新标准下,我们可以通过将拷贝构造函数和拷贝赋值运算符定义为删除的函数(deleted function)来阻止拷贝。删除的函数是这样一种函数:我们虽然声明了它们,但不能以任何形式使用它们。在参数列表后面加上=delete=delete必须出现在函数第一次声明的时候,且可以对任何函数指定=delete。

2023-12-12 18:40:25 974

原创 《C++ Primer》第12章 动态内存(二)

在大多数情况下,我们应该使用容器而非动态数组,使用容器的类可以使用默认版本的拷贝、赋值、析构操作,而使用动态数组的类必须定义自己版本的操作。分配的对象,不论是单个对象还是数组,都是默认初始化的。的规则有一个例外:我们可以拷贝或赋值一个将要被摧毁的。不支持下标运算符,为了访问访问数组中的元素,必须用。得到的仅仅是一个指针,而并不是一个数组,那么。释放一个动态数组,这个行为是未定义的。中的同名成员不同,它还要额外检查指向的。一个对象时使用了方括号,结果是未定义的。的引用计数,一旦最后一个指向对象的。

2023-12-11 14:29:53 398

原创 《C++ Primer》第12章 动态内存(一)

StrBlob。

2023-12-07 10:16:52 1083 1

原创 《C++ Primer》第11章 关联容器

和位置相关的操作,如push_backpush_front。接受一个元素值和一个数量值的构造函数和插入操作。关联容器的迭代器都是双向的。每个关联容器都定义了一个默认构造函数,它创建一个空容器;我们也可以将关联容器初始化为另一个同类型容器的拷贝;

2023-12-04 16:46:53 450

原创 《C++ Primer》第10章 算法(二)

可以发现,使用反向迭代器会导致我们的实际输出也是反过来的,所以我们需要使用。对于向算法传递错误类别迭代器的问题,很多编译器不会给出警告信息。的迭代器都是随机访问迭代器,访问内置数组元素的指针也是。:可以双向移动,支持前向迭代器所有操作,支持前置和后置。外,所有标准库容器都提供符合双向迭代器要求的迭代器。通用算法不会改变容器,而链表特有版本会改变底层容器。创建一个流迭代器时,必须指定迭代器要读写的类型。外,标准库中的所有容器都同时支持递增和递减操作。方式实现交换,所以专用版本的算法效率往往更高。

2023-11-30 19:34:09 1197

原创 《C++ Primer》第10章 算法(一)

大多数算法定义在头文件algorithm中,头文件numeric中也定义了一组数值泛型算法。一般情况下,算法不直接操作容器,而是通过迭代器来进行操作。比如标准库算法find,前两个参数是表示元素范围的迭代器,第三个参数是一个值。find将范围内的每个元素与给定值相比较,返回第一个与给定值相等的元素的迭代器,如果范围中无匹配元素,则返回第二个参数int val;由于指针就像内置数组上的迭代器一样,我们可以用find当我们通过插入迭代器(insert iterator)

2023-11-24 15:52:13 938

原创 《C++ Primer》第9章 顺序容器(一)

所有顺序容器都提供了快速顺序访问向容器添加、删除元素非顺序访问容器中的元素除了固定大小的array外,其他容器提供高效、灵活的内存管理。string和vector将元素保存在连续的空间中,所以支持随机访问,但在中间位置添加或删除元素就非常耗时。添加一个元素可还需要分配额外的存储空间,此时容器中的每个元素都将移动到新的存储空间中。list和可以快速在任何位置添加或删除元素,但不支持随机访问。这两个容器的额外内存开销也较大。deque。

2023-11-22 19:15:22 183

原创 《C++ Primer》第9章 顺序容器(三)

string。

2023-11-22 19:12:50 104

原创 《C++ Primer》第9章 顺序容器(二)

的迭代器。

2023-11-16 16:45:30 88

原创 《C++ Primer》第8章 IO库

我们不能拷贝或对 IO 对象赋值,进行 IO 操作的函数通常以引用的方式传递和返回流。当一个输入流被关联到一个输出流时,任何试图从输入流中读取数据的操作都会先刷新输出流的缓冲区。IO 操作可能发生不同类型的错误,IO 类定义了一些函数和标志,可以帮助我们访问和操纵流的。,如果本对象关联到一个输出流,则返回那个输出流的指针;每个流最多与一个流关联,但多个流可以同时关联到一个输出流(单向关联)。的单参数版本接受一个指向输出流的指针,将自己关联到此输出流。对于一个给定的流,每当打开文件时都可以改变文件模式。

2023-11-09 16:36:22 100

原创 《C++ Primer》第7章 类(二)

对于定义在类外部的函数成员而言,一旦遇到类名,定义的剩余部分就是在类的作用域之内void Window_mgr::clear(ScreenIndex i){ // ScreanIndex是类Window_mgr中的类型成员需要注意的是,由于返回类型出现在类名之前,所以它位于类的作用域之外,所以如果我们的返回类型是,就必须写成。在函数内查找该名字,只有在使用之前出现的声明才被考虑。如果在函数内没找到,则在类内查找,此时无需考虑先后顺序。如果类内没找到,则在成员函数定义之前的作用域内寻找。

2023-11-08 20:24:08 131

原创 《C++ Primer》第7章 类(一)

Sales_dataSales_datathis我们调用成员函数时,实际上是替某个对象调用它。成员函数通过一个名为this的额外隐式参数来访问调用它的对象。当我们调用一个函数时,编译器负责用请求该函数的对象地址初始化this。在成员函数内部,任何对类成员的直接访问都被看作this的隐式引用。因为this总是指向“这个”对象,所以this是一个指针常量。this如果非成员函数是类接口的组成部分,则这些函数的声明应该与类在同一个头文件内。

2023-11-08 14:30:28 512

原创 《C++ Primer》第6章 函数(二)

/ 错误。

2023-11-06 15:13:00 118

原创 《C++ Primer》第6章 函数(一)

参考资料:典型的函数定义包括:返回类型( return type )、函数名字、0 个或多个形参( parameter )组成的列表、函数体。其中函数体为语句块。我们通过调用运算符执行函数。调用运算符的形式是一对圆括号,作用于函数或指向函数的指针,圆括号之内是实参(argument)列表,实参用来初始化函数的形参。调用表达式结果的类型就是函数的返回类型。函数调用完成两项工作:实参和形参一一对应,但没有规定求值顺序。实参的类型必须与对应的形参匹配,实参的数量和形参一致。形参列表可以为空,但不能省略:每个形参

2023-11-02 15:27:25 118

原创 《C++ Primer》第5章 语句

如果某处一个带有初值的变量位于作用域之外,在另一处该变量位于作用于之内,则从前一处条跳转到后一处是非法行为,因为 C++ 不允许跨过变量的初始化语句直接跳转到该变量的作用域内。int j = 0;// 错误string str;// 错误,str被隐式初始化了;需要注意的是,即使后面并没有用到前面初始化的变量,这种跳转也是不合法的。中可以声明多个对象,但只能有一条声明语句,所以所有对象的类型必须相同。

2023-10-08 20:35:32 129 1

原创 《C++ Primer》第4章 表达式(二)

类类型能定义由编译器自动执行的转换。

2023-10-07 20:50:11 99

原创 《C++ Primer》第4章 表达式(一)

参考资料:表达式由一个或多个运算对象组成,对表达式求值将得到一个结果。字面量和变量是最简单的表达式。C++ 定义了若干一元运算符、二元运算符,还有一个三元运算符,函数调用也是一种特殊的运算符。对以一个复杂的表达式,我们首先要理解其运算符的优先级、结合律,以及运算对象的求值顺序。小整型会被提升为大整型。重载运算符时,运算对象的类型和返回值的类型是可以重新定义的,但运算对象的个数、运算符的优先级和结合律是不能改变的。C++ 表达式要么是右值,要么是左值。一个左值表达式的求值结果为一个对象或者一个函数,一般而言,

2023-09-27 16:46:03 142

原创 《计算机网络》——应用层

单点故障。通信容量。远距离的集中式数据库维护。

2023-09-18 20:23:37 578

原创 《C++ Primer》第3章 字符串、向量和数组(三)

数组是一种复合类型,声明形如a[d],其中d是数组的维度。维度必须大于 0 且必须是一个常量表达式。默认情况下,数组的元素被默认初始化。如果在函数内部定义了内置类型的数组,则默认初始化会令数组含有未定义的值。定义数组时必须指定数组类型,不允许通过auto推断元素类型。不存在引用的数组。

2023-09-14 15:29:31 162

原创 《C++ Primer》第3章 字符串、向量和数组(二)

vector所有标准库容器都可以使用迭代器(iterator)访问其元素。迭代器类似于指针类型,提了对象的间接访问,迭代器可以访问某个元素,也能从一元素移动到另一个元素。迭代器有无效和有效之分,有效的迭代器指向某个元素,或者指向尾元素的下一个位置。

2023-09-13 15:53:34 117

原创 《C++ Primer》第3章 字符串、向量和数组(一)

string。

2023-09-12 20:28:54 137

原创 《C++ Primer》第2章 变量(二)

C++ 允许用户以类的形式自定义数据结构。由于类体后面可以紧跟变量名(不推荐这么做),所以类定义后面必须加分号。预处理器是用来确保头文件多次包含仍能安全工作的常用技术。预处理器在编译之前运行。预处理器看到#include标记时会用头文件的内容代替#include。头文件保护符依赖于处理变量。预处理变量(NULL就是一个预处理变量)有两种状态:已定义和未定义。define指令把把一个名字定义为预处理变量;#ifdef在变量已定义时为真,#ifndef在变量未定义时为真,一旦检查结果为真,则执行到#endif。

2023-09-07 16:30:39 319

原创 《C++ Primer》第2章 变量(一)

变量定义的基本形式:类型说明符,随后紧跟一个或多个变量名(用逗号分隔)。// 错误变量声明的作用是告诉编译器某个实体的存在;定义的作用是在程序中为实体分配内存。定义变量的同时也就声明了这个变量,如果仅仅想要声明一个变量,要使用extern关键字,并且不能显式初始化。变量只能被定义一次,可以被声明多次。

2023-09-05 16:32:13 155

原创 《C++ Primer》第1章 开始

C++ 的 IO 控制;注释;

2023-09-04 15:34:40 220 1

华中科技大学_2022年春_算法实践报告

华中科技大学_2022年春_算法实践报告

2022-06-06

空空如也

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

TA关注的人

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