自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 函数对象,仿函数用法

作用:可以利用仿函数,可以改变排序规则(举例)

2022-09-13 11:31:42 147 1

原创 转换函数的用法

转换函数(conversion function)是一种特殊类型的类成员函数。它定义了一个由用户定义的转换,以便把一个类对象转换成某种其他的类型。在类的声明中,通过指定关键字operator,并在其后加上转换的目标类型后,我们就可以声明转换函数。同样也可以把转化成字符串(由自己定义)标准库中的转换函数举例。

2022-09-12 22:04:07 993

原创 多态,虚函数,纯虚函数

多态是C++面向对象三大特性之一多态分为两类静态多态和动态多态区别:non-virtual函数:你不希望derived class重新定义(override)它。virtual函数:你希望derived class重新定义它,况且你对它有默认定义在多态中,通常父类中虚函数的实现是毫无意义的,主要都是调用子类重写的内容。因此可以将虚函数改为纯虚函数pure virtual 函数:你希望 derived class 一定要重新定义(override 覆盖它),你对它没有默认定义。纯虚函数语法:当类中有了纯虚函

2022-09-12 20:29:09 362

原创 c++栈 堆 ,动态分配内存,回收动态分配的内存

内存泄漏:以上代码会出现内存泄漏,因为当作用域结束,p所指向的heap object仍然存在,但指针p的生命却结束了,作用域之外再不会看到p.c2便是所谓static Object,其生命在作用域结束之后仍然存在,直到整个程序结束。第二步删除的其实才是字符串 ,字符串其实本身就是一个指针,用来存放分配好的内存的地址。c3是全局对象,其生命周期是整个程序结束之后才会结束,可以把它当作静态对象。p 所指的便是 heap Object,其生命在它被delete 之际结束。删除动态分配的内存,一定要搭配好。

2022-09-09 17:58:19 418

原创 c++拷贝构造拷贝赋值,浅拷贝,深拷贝问题

如果类中有拷贝指针,需要重写拷贝构造函数(深拷贝),不重写的话直接是浅拷贝(没有真正分配内存空间,两个指针指向同一块内存)。这样会导致内存泄漏问题。2.如果没有这个检测代码,会导致错误,会导致自己先把自己删除,因为它的第一件事就是delete。下边说一下拷贝拷贝构造拷贝赋值,浅拷贝,深拷贝问题。1.如果是自己给自己赋值,这样检测可以提高效率。

2022-09-09 15:30:47 276

原创 用annaconda安装包时的命令

2)删除环境中的某个包: conda remove --name your_env_name(虚拟环境名称) package_name(包名)中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/豆瓣(douban) http://pypi.douban.com/simple/

2022-09-09 12:21:00 801

原创 c++ 重载<<操作符

c++重载

2022-09-09 12:15:51 3105

原创 c++返回引用

c++写类时需要注意的事项,什么情况下不能返回引用,什么情况下需要返回引用

2022-09-09 12:06:47 1844

原创 c++头文件中的防卫式声明

c++ 防卫式声明的作用,宏定义,编译器指令progma once

2022-09-09 11:57:09 374

原创 np.random.seed()作用

np.random.seed(seed)的作用1: 随机种子确定后,则该种子之后产生之后的所有随机序列都固定下来了。2:不管什么时候运行该种子生成的随机数的代码,生成的随机数序列都相同3:无论在哪个电脑上运行该代码,随机数序列都相同4:不管种子在代码哪里被声明,不管是循环里面还是外边,其后边不管在代码哪块产生的随机数序列,都是该种子对应的随机数序列,后边再次唤醒该种子后,其随机数序列和上边一摸一样。总结:种子确定以后,该种子对应的随机数序列也就确定下来了。(无论何时何地)代码部分解释:代码1:

2021-08-13 15:57:26 2037

原创 线索二叉树的构造等问题

//线索二叉树的存储结构描述如下:typedef struct ThreadNode { char data;//数据元素 struct ThreadNode* lchild, * rchild;//左右孩子指针; int ltag, rtag;//左右线索标志 用0代表有孩子,}ThreadNode,*ThreadTree;1.中序线索二叉树的构造ThreadNode* pre = NULL;//定义一个全局变量pre,用来表示访问结点的前一个结点void visit(ThreadNod

2020-09-21 16:10:20 209

原创 单链表的经典问题4

单链表中结点类型定义如下:typedef struct link { int data; link* next;}node,*linklist;设A和B是两个单链表(带头节点),其中元素递增有序,设计一个算法从A和B中公共元素产生单链表C,要求不破坏A B的结点void fun3(linklist& A, linklist& B) { //设A和B是两个单链表(带头节点),其中元素递增有序,设计一个算法从A和B中公共元素产生单链表C,要求不破坏A B的结点 node* p

2020-09-13 14:28:05 811

原创 单链表经典问题3

单链表中节点类型定义如下:typedef struct link { int data; link* next;}node,*linklist;1.试编写在带头节点的单链表L中删除一个最小值节点的高效算法(假设最小值节点时唯一的)void delete_MinX(linklist& L) {//试编写在带头节点的单链表L中删除一个最小值节点的高效算法(假设最小值节点时唯一的) node* min_pre = L;//记录最小节点的前一个节点 node* min_p=L->ne

2020-09-13 14:22:36 635

原创 单链表的经典问题2

单链表中节点类型定义如下:typedef struct link { int data; link* next;}node,*linklist;1.将一个头指针为head且不带头节点的单链表改造为一个含头节点且头指针为head的单循环链表。void fun(linklist& head) {//将一个头指针为head且不带头节点的单链表改造为一个含头节点且头指针为head的单循环链表。 node* s = (node*)malloc(sizeof(node*));//先增加头节点 s

2020-09-09 17:30:18 559

原创 循环单(双)链表

循环单链表(带头节点)单链表的节点类型描述如下:typedef struct LNode {//定义单链表节点类型 int data;//数据域 struct LNode* next;//指针域}LNode,*LinkList;循环单链表的基本操作实现:(其他的插入,删除操作类似于单链表)bool InitList(LinkList& L) {//初始化一个循环单链表bool Empty(LinkList L) {//判断链表是否为空bool isTail(LinkList L,

2020-09-08 18:43:54 575

原创 单链表的经典问题

使用尾插法(头插法)创建一个带头节点(不带头节点)的单链表单链表中的节点类型描述如下:typedef struct link { int data; link* next;}node,*linklist;使用尾插法(头插法)创建一个带头节点的单链表void Creat_list_Head(linklist& L) {//创建一个带头节点的单链表 //尾插法 /*int x; L = (node*)malloc(sizeof(node*));//先创建一个头节点 L->

2020-09-08 18:43:03 484

原创 双向链表基本操作的实现(带头节点)

双向链表的基本操作实现(含头节点)typedef struct DNode {//定义双链表的节点类型 int data;//数据域 struct DNode* prior, * next;//前驱和后继指针}DNode,*DLinkList;以下几种操作bool InitDLinkList(DLinkList& L) {//初始化双链表bool Empty(DLinkList L) {//判断双链表是否为空bool InsertNextDNode(DNode* p, DNode*

2020-09-06 20:29:06 388

原创 单链表的操作(不带头节点)

单链表的操作(以下均为不带头节点的操作)单链表中节点类型的描述如下typedef struct LNode {//定以单链表的节点类型 int data;//数据域 struct LNode* next;//指针域}LNode,*LinkList;单链表的基本操作bool InitList(LinkList& L) //初始化一个单链表bool Empty(LinkList& L) //判断单链表是否为空bool ListInsert1(LinkList& L, i

2020-09-06 18:35:59 449

原创 单链表的操作(带头节点)

单链表的操作(带头节点)typedef struct LNode{//声明一个结构体 int data; struct LNode* next;}LNode,*LinkList;链表的各种具体操作函数bool InitList(LinkList& L)//链表的初始化bool Empty(LinkList& L)//判断链表是否为空int Length(LinkList& L)//求单链表的长度bool ListInsert(LinkList& L, int

2020-09-06 18:34:24 211

原创 求数组的最大值和次大值问题

求整形数组最大值和次大值问题#include<iostream>#include<string>using namespace std;int main(){ int a[] = { 23,23,8,2,0,24,12,24 }; int len = sizeof(a) / sizeof(a[0]); int i, max1 = 0, ma...

2020-02-10 15:59:53 607

空空如也

空空如也

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

TA关注的人

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