自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 收藏
  • 关注

原创 cpp primer plus笔记08-抽象和类

为解决相同变量名在不同枚举类型参数错误,CPP11引入新的枚举,但是该枚举类型不能相互隐式为其他类型,只能显示转换,枚举类型的基础类型可以为各种整形和字符串类型,但是不能是其他类型。通过静态常变量定义,(注:只有整形才能在类中被初始化)如果构造函数只有一个参数,可以进行下面方式的初始化。通过构造函数初始化。

2023-10-07 17:48:34 145

原创 cpp primer plus笔记012-STL模板库

auto_ptr:如果前面的智能指针的指向和现有的智能指针指向了同一个对象,则针对这个对象的操作所有权传递给了现有的指针,而原有的智能指针无法引用该对象,auto_ptr使用需要使用new分配内存,注,unique_ptr和shared_ptr指针不能转换成auto_ptr,但是auto_ptr指针能转换成unique_ptr和shared_ptr指针。unique_ptr: 如果前面的智能指针和现有的智能指针指向了同一个对象,则编译器会报错,unique_ptr使用需要使用new或者new[]分配内存。

2023-10-07 17:46:41 123

原创 cpp primer plus笔记011-友元,异常和其他

引发异常时编译器总是创建一个临时的拷贝,即使异常规范和catch块中指定的是引用,如下面的代码,catch将指向oops的副本,而不是oops本身,在释放函数内存后,oops将销毁,但是catch仍然使用引用,这是因为基类引用可以执行派生类对象,假设如果有一连串通过继承来关联的异常类型,则catch()中只需要写基类的引用,这将于任何派生类对象匹配,但是由于这种方法使得基类可以捕获派生类异常,一般catch语块排列顺序为将捕获位于层次结构最下面的异常类的catch语句放在最前面。

2023-10-07 17:45:33 121

原创 cpp primer plus笔记010-继承

注:模板为不同类型的对象使用的类是不同的,如int的对象使用的int具体化的类,double的对象使用的是double具体化的类。如果定义了基类的指针或者引用,并且该指针和引用使用派生类构造或者赋值,如果调用一个基类和派生类都有的函数,如果基类同名函数没有被virtual修饰,则会调用基类的函数,否则调用派生类的函数。修饰类中的成员函数,如果基类中的的成员函数使用类virtual,则派生类可以重写基类的该成员函数。非约束模板友元,即友元的所有具体化都是类的每个具体化的友元。析构函数不能被继承。

2023-10-07 17:44:17 76

原创 cpp primer plus笔记09-类

由于使用了默认复制构造函数,这使得(字符串)数组,赋值的时候使用的是a = b,而不是memcpy或者strcpy,从而会使得赋值变成复制数组地址,从而会使得被赋值的数组出现乱码,当赋值的数据被delete掉时,数组中的指针指向的数据会被delete掉,从而使得如果被赋值数据被delete掉时,会delete数据数据两次,引发异常。默认的复制构造函数会逐个复制非静态成员的值,如果成员本身是个类对象,则使用该成员的类的复制构造函数来复制成员对象,而静态成员不受影响。

2023-10-07 17:42:32 47

原创 cpp primer plus笔记08-抽象和类

为解决相同变量名在不同枚举类型参数错误,CPP11引入新的枚举,但是该枚举类型不能相互隐式为其他类型,只能显示转换,枚举类型的基础类型可以为各种整形和字符串类型,但是不能是其他类型。通过静态常变量定义,(注:只有整形才能在类中被初始化)如果构造函数只有一个参数,可以进行下面方式的初始化。通过构造函数初始化。

2023-10-07 17:40:42 46

原创 cpp primer plus笔记07-内存模型和命名空间

相同的变量名放置在不同文件全局,如果不使用以上方法的话,只能设置为一个是外部链接和一个是内部链接的变量。对于相同变量名的变量,CPP会覆盖作用域大的变量,而使用作用域小的变量,如果想在函数体内使用全局的变量可以在变量名前加上::加以区分,比如warm=3会使得局部的warm变量等于3,而::warm=3会使得全局的warm=3。可以在不同文件对同一命名空间添加相关数据,但是,但是如果有文件没有包含某个文件,但是包含其他和该文件一样命名空间的文件,那么是不能使用该文件的相关数据的。可以给命名空间建立别名。

2023-10-07 17:39:50 52

原创 cpp primer plus笔记06-函数

对于重载函数的选择,编译器倾向于优先选择非模板函数,如果没有非模板函数,则倾向于选择从类型等各方面来说相对具体的函数,如果没有一个函数比其他函数更具体,或者没有与之相匹配的函数,则会产生错误,但是向下面的情况(第二行),编译器会倾向于选择模板函数,而不是非模板函数。函数返回值可以是引用变量,这样就不会把数据复制到一个新的临时的位置,效率会更高,但是引用变量尽量返回函数参数的的变量,引用尽量是自定义数据结构这种复杂的数据结构,而且返回值如果是引用类型尽量加const修饰。声明为一个常量引用。

2023-10-07 17:35:05 76

原创 cpp primer plus笔记05-ios_base

【代码】cpp笔记05-ios_base。

2023-10-06 16:27:08 106

原创 cpp primer plus笔记04-循环和关系表达式

基于范围的for循环,下面的代码块实现了三种类型基于范围的for循环,第一种属于获取数组或者容器类的元素的值,第二种属于修改数组或者容器类的元素的值,第三种可以结合初始化列表。如果cin函数输入的值类型不符合相关变量的类型,或者遇到EOF,则返回false,否则返回true。

2023-10-06 16:25:33 46

原创 cpp primer plus笔记03-复合类型

由于缺少char8_t,char16_t和char32_t的标准输出流,以上三种类型的字符串需要转化为窄字符串或者宽字符串,才能有意义的写入标准输出流,而且一般只有写入文件时才真正有用。CPP11支持列表初始化运用于结构体,且等号可以省略,如果列表初始化的大括号未包含任何东西,则各个成员被设置为零,CPP11列表初始化不允许缩窄转换。结构体允许在函数内部和外部定义,但是定义在函数内部的结构体只能在该声明所属的函数使用,但CPP提倡外部结构声明。不使用delete来释放不是new分配的内存。

2023-10-06 16:23:17 94

原创 cpp primer plus笔记02-处理数据

类型检查的目的是为了防止类型错误的发生,例如将一个整数赋值给一个字符串变量,或者将一个函数的返回值赋值给一个不兼容的变量等。通过对代码进行类型检查,可以在编译或运行时发现这些类型错误,并提前进行修正,从而避免在程序执行过程中出现潜在的类型相关问题。以两个下划线开头或者以下划线和大写字母打头的名称被保留给实现使用(编译器及其使用的资源),以一个下划线开头的名称被保留给实现,用作全局标识符,例如__fools,_Mystars3。:用于进行静态类型转换,它在编译时进行类型检查,不进行运行时的安全性检查。

2023-10-06 16:21:58 133

原创 cpp primer plus笔记01-注意事项

在特定的函数定义中使用类似using std::cout;的编译指令,而不是using namespace std;将using namespace std放置在函数定义之前,让文件的所有函数都能命名空间std的所有元素。将using namespace std放置在特定的函数定义中,让该函数能够使用名称空间std的所有元素。函数体内引用的命名空间会随着函数生命周期结束而失效,放置在全局引用的命名空间随着程序运行结束而失效。引用命名空间的名字,例如:using std::cout;cpp程序的模块叫函数。

2023-10-06 16:14:05 83

原创 cpp primer笔记110-面向对象程序设计

修改类D1和D2,把覆盖的虚函数去掉,那么D1和D2作用域内就没有名字func了,使用b1调用func(int)或者func()函数,都无法在D1作用域内找到函数名,于是在外层作用域中继续寻找,也就是在base作用域中查找,能找到重载的两个版本的函数,接着进行正常的函数匹配,也不会出现编译错误。如果基类的指针通过派生类构造,如果基类的构造函数不是虚函数,则该指针的(派生类)对象会调用基类的析构函数,因此最好将基类的析构函数用virtual修饰,从而让该指针的对象调用派生类的析构函数。

2023-10-06 16:12:15 62

原创 cpp primer笔记100-拷贝控制

移动构造函数需要notexcept修饰的原因是,如果在对vector进行push_back重新分配空间时,移动失败的话vector内的元素会发生改变,可能已经不存在,导致程序后面发生错误,拷贝失败的话,vector旧元素并不发生改变,vector原有元素还是会存在的。移动构造函数基本是针对指针进行操作的,移动是将原有的指针指向的位置传递给新的指针,并且将原有的指针置空,拷贝是将原有的指针指向的数据copy一份给新的指针,所以移后原对象基本可以说是报废不可用,所以说不建议对移后原对象进行操作。

2023-10-06 16:08:44 64

原创 cpp primer笔记090-动态内存

每个shared_ptr都有一个关联的计数器,通常称其为引用计数,当调用了shared_ptr的构造函数时就会递增,当调用析构函数时就会递减,一旦一个shared_ptr的计数器为0的时候,它就会自动释放自己所管理的对象。如果想让STL的容器产生类似于shared_ptr指针的效果,可以进行下面的操作:(如果一个shared_ptr指向的对象的引用次数为0,则该对象会被销毁)shared_ptr和unique_ptr都支持的操作,加上shared_ptr独有的操作。

2023-10-06 16:05:15 132

原创 cpp primer笔记070-算法函数

lambda表达式一般构成部分为一下四种,(注意:lambda表达式不能有默认参数,捕获列表只能用于局部非静态变量,对于局部静态变量和全局变量可以直接使用,如果采取值捕获的方式,则变量可以被拷贝,并且被捕获的变量的值是在lambda创建时拷贝的,而不是调用的时候。accumulate的第三个参数的类型决定了函数中使用哪个加法运算符以及返回值的类型,如果返回值是自定义类型,需要使用accumlate,则需要重载运算符,该接口的第三个参数返回的是一个需要处理的数据类型的一个变量。(这里如果a不加&号会报错)

2023-10-06 15:58:03 85

原创 cpp primer笔记060-顺序容器

对于给定的适配器,可以使用哪些容器是有限制的。如果两个容器中较小的容器是较大的容器的前缀,则较小的容器小于较大的容器,如果两个容器中的某个位置对应的前面元素相同,但是该位置元素较大的容器大。重新分配一个对象的储存空间需要分配新的内存,并将元素从旧的空间移动到新的空间中。中b指向要删除的第一个元素,e指向要删除的最后一个元素之后的位置,如果b==e,则不删除元素。容器中的max_size代表容器能够装载最大元素的值,不同元素的容器的max_size可能不一样,一般至少有1e9的数据量。队列适配器拥有的操作。

2023-10-06 15:43:19 39

原创 cpp primer笔记050-OI库

tie函数有两个重载的版本,一个是不带参数,返回关联的输出流的指针:如果本对象关联到一个输出流,则返回的就是指向这个流的指针,如果对象未关联到流,返回的是空指针。tie的第二个版本接受一个指向ostream的指针,将自己关联到此ostream,即x.tie(&o)将x流关联到输出流o。每个流最多可以同时关联到一个流,但是可以有多个流同时关联到一个ostream。当一个输入流被关联到一个输出流,任何试图从输入流读取数据的操作都会先刷新关联的输出流,标准库将cout和cin关联在一起,因此cin>>val;

2023-10-06 15:27:42 57

原创 cpp primer笔记040-函数与类

静态数据成员不属于类的任何一个对象,所以他们不是由类的构造函数初始化的。一般来说,不能在类的内部初始化静态成员,只能在类的外部定义和初始化每个静态成员。静态数据成员可以是不完全类型,即声明和定义分开,非静态数据成员不可以是不完全类型,但是非静态引用/指针成员可以是完全类型,静态数据成员可以作为类中的函数默认实参。或者如果成员属于某个类类型,则初始化必须使用成员自己的constrexpr。聚合类是所有成员都是public的,没有定义任何构造函数,没有类内初始值,没有基类和virtual函数的类。

2023-10-06 15:26:01 38

原创 cpp-primer笔记 020-字符串,向量和数组

CPP定义了一组异常类,分别被放在4个头文件中,其中exception头文件定义类最通用的异常类exception,只报告异常的发生,不提供任何额外信息;CPP11引入begin和end函数,其使用和STL的begin和end类似,只不过需要传递一个数组首元素地址,如果有两个指针指向同一个数组的元素,或者指向该数组的尾元素的下一位置。c_str函数返回的是const char*类型的C风格字符串指针,c_str无法保证返回值一直有效,事实上,如果后续的操作改变了s的值就可能让之前返回的数组失去效用。

2023-10-06 15:24:18 43

原创 cpp primer笔记030-参数传递

CPP定义了一组异常类,分别被放在4个头文件中,其中exception头文件定义类最通用的异常类exception,只报告异常的发生,不提供任何额外信息;CPP11引入begin和end函数,其使用和STL的begin和end类似,只不过需要传递一个数组首元素地址,如果有两个指针指向同一个数组的元素,或者指向该数组的尾元素的下一位置。c_str函数返回的是const char*类型的C风格字符串指针,c_str无法保证返回值一直有效,事实上,如果后续的操作改变了s的值就可能让之前返回的数组失去效用。

2023-10-06 15:16:57 65

原创 cpp primer笔记-010开始

当赋给无符号类型一个超出其表示范围的值是,得到的结果是初始值对无符号类型表示数值总数取模后的余数,但是赋给有符号类型一个超出其表示范围的值,结果是未定义未知的,程序可能继续工作,可能崩溃,也可能产生垃圾数据。使用泛化的转义序列,其形式是\x后紧跟着1ge或者多个16进制数字,或者\后紧跟着1个或者多个八进制数组其中数字部分表示的是字符对应的数值,如果\后面跟着的八进制数组超过3个,则只有前面三个数字与\构成转义序列,如果\x跟着的十六进制数超过4个,则只有前面4个数组与\构成转义序列。

2023-10-06 15:13:36 74

原创 Codeforces Round 874 (Div. 3)A-F

思路:这个数组里面所有数值连在一起不是环就是链,如果找最大值就是判断环和链的个数,这个可以用并查集,如果是找最小值的话,就是找最大的环,但是数组中的这些小环是不可能拆开组成最大环的,而链可以一起组成最大环,所以找完最大环后,还有把这些小环的个数加上。再将每一个brr[i]的值填入对应的arr[i]的second中.因为idex组成的3 2 1 是fa的一个排列,所以这是一个环,代码中排断环,我是用异或,即将fa和idex一起异或,得出的数要是0,说明就是个环,否则是个链。思路:太麻烦了,不想说。

2023-05-20 14:44:39 686 2

原创 洛谷P2572 [SCOI2010] 序列操作

lxhgww 最近收到了一个 $01$ 序列,序列里面包含了 $n$ 个数,下标从 $0$ 开始。- `2 l r` 把 $[l,r]$ 区间内的所有数全部取反,也就是说把所有的 $0$ 变成 $1$,把所有的 $1$ 变成 $0$- `4 l r` 询问 $[l, r]$ 区间内最多有多少个连续的 $1$- `0 l r` 把 $[l, r]$ 区间内的所有数全变成 $0$- `1 l r` 把 $[l, r]$ 区间内的所有数全变成 $1$第一行两个正整数 $n,m$,表示序列长度与操作个数。

2023-05-06 15:14:41 124

原创 Nonfibonacci numbers

2023-04-04 15:14:23 78

原创 Digit Products

2023-04-04 14:12:41 76

原创 Magic Numbers

2023-04-03 23:23:38 64

原创 洛谷P1868 饥饿的奶牛

注,由于数据量过大,从前面的dp转移的算法需要优化,此时我们发现,如果当有一段区间的y刚好小于第i个区间的x,该dp和该区间前面的dp满足转移的条件,而后面的则会不满足,而该dp是前面所有dp的最优值,所以,只需要找到该dp所在的位置即可,所以可以用二分查找。先根据y值从小到大排序,再用动态规划来做,dp[i]代表前i个区间吃到的最多的牧草数,dp[i]可以从dp[i-1]转移,即不取第i个区间得到的牧草数,也可以从前面的dp来转移,即不取第i个区间得到的牧草数,从二者取最大值。### 样例输出 #1。

2023-03-27 20:07:18 237 1

原创 洛谷P2758 编辑距离

2023-03-26 14:28:37 101

原创 P1462 通往奥格瑞玛的道路

2023-03-21 23:12:39 66

原创 洛谷P1462 通往奥格瑞玛的道路

2023-03-18 12:09:52 163

原创 寒假线段树2

仅用于学习记录

2023-02-17 20:14:57 52

原创 寒假训练数论第N题

仅用于学习记录

2023-02-17 20:03:02 113

原创 线段树1题目

仅作学习记录

2023-02-17 19:18:29 52

原创 寒假训练题目LCM

2023-02-10 22:26:56 63

原创 Number Factorization

2023-02-02 15:57:14 143

原创 The Forbidden Permutation

2023-02-02 14:31:07 213 2

原创 石子合并(环形)

2023-01-17 23:11:38 101

原创 Bag of mice

2023-01-17 23:02:56 58

空空如也

空空如也

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

TA关注的人

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