自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(160)
  • 资源 (2)
  • 问答 (6)
  • 收藏
  • 关注

原创 Rust智能指针简介

Rust智能指针的简介(相较于C++)

2022-12-05 23:13:29 379 1

原创 Rust生命周期简介

Rust中生命周期的简介

2022-11-29 21:36:20 575

原创 Rust Trait简介

rust的简单介绍

2022-11-28 19:48:11 1016

原创 Rust错误处理简介

Rust错误处理简单介绍,包括panic和Reslut

2022-11-27 15:27:51 833

原创 Rust迭代器简介

Rust迭代器的简单介绍

2022-11-25 17:17:16 683

原创 Rust的一些特性

Rust相较于C++的一些feature

2022-11-24 21:04:10 1165

原创 Rust的面向对象特性

Rust对面向对象功能支持

2022-11-24 16:34:58 867

原创 Python random库使用的一些简单例子

python random库的简单使用了解

2022-11-12 19:30:39 1077

原创 Rust猜数游戏

用Rust实现的猜数游戏

2022-08-28 20:53:52 79

原创 用C++自己实现一个可以接收所有类型的Any类

用C++11设计一个Any类,类似Java的Object类。C++14已将其引入标准库

2022-08-18 10:31:41 212

原创 UnionFind(并查集)

基于C++的并查集数据结构的实现,一步步优化。可阅读性应该还可以。

2022-08-16 20:17:53 402

原创 网络编程:IO复用TCP循环服务器(简单时间服务器)

网络编程:IO复用TCP循环服务器(简单时间服务器)写在前面的话IO复用循环服务器指,建立两个线程一个用于处理连接,处理好之后放到文件状态表中,一个用于处理客户端请求,用select监听处理好的连接,处理结束后将连接移出文件状态表。该模型不会产生过多进程(线程)导致过多的上下文切换。参考教材:Linux网络编程。题目(功能)服务端:接收客户端时间请求,返回本地时间客户端:发送时间请求,接收客户端返回的时间并打印服务端代码#include <sys/types.h>#inclu

2022-04-29 20:03:48 100

原创 网络编程:单客户端单线程统一accpet TCP并发服务器(简单时间服务器)

网络编程:单客户端单线程统一accpet TCP并发服务器(简单时间服务器)写在前面的话由主进程统一的处理客户端连接,当客户端连接到来时才创建子线程来处理客户端请求。参考教材:Linux网络编程。题目(功能)服务端:接收客户端时间请求,返回本地时间客户端:发送时间请求,接收客户端返回的时间并打印服务端代码#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#incl

2022-04-29 20:03:17 133

原创 网络编程:单客户端单进程统一accpet TCP并发服务器(简单时间服务器)

网络编程:单客户端单进程统一accpet TCP并发服务器(简单时间服务器)写在前面的话由主进程统一的处理客户端连接,当客户端连接到来时才fork()子进程来处理客户端请求。参考教材:Linux网络编程。题目(功能)服务端:接收客户端时间请求,返回本地时间客户端:发送时间请求,接收客户端返回的时间并打印服务端代码#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#

2022-04-29 20:02:51 1142

原创 网络编程:TCP循环服务器(简单时间服务器)

网络编程:TCP循环服务器(简单时间服务器)写在前面的话循环服务器指对于客户端的连接,服务器处理完一个之后接着处理另一个。即串行处理。要熟悉代码流程,并区别于UDP循环服务器。参考教材:Linux网络编程。题目(功能)服务端:接收客户端时间请求,返回本地时间客户端:发送时间请求,接收客户端返回的时间并打印服务端代码#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>

2022-04-29 19:40:09 510

原创 网络编程:UDP循环服务器(简单时间服务器)

网络编程:UDP循环服务器(简单时间服务器)写在前面的话循环服务器指对于客户端的连接,服务器处理完一个之后接着处理另一个。即串行处理。要熟悉代码流程,这是最简单的服务器模式。参考教材:Linux网络编程。题目(功能)服务端:接收客户端时间请求,返回本地时间客户端:发送时间请求,接收客户端返回的时间并打印服务端代码#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#

2022-04-29 19:38:53 510

原创 网络编程:UDP 客户端服务端简单例子

网络编程:UDP 客户端/服务端简单例子写在前面的话该例子较为简单,适合网络编程小白学习,用于了解UDP下C/S服务模式编程的流程。参考教材:Linux网络编程(第二版)题目(功能)客户端:1.向服务端发送测试字符串“UP TEST”。2.接受服务端发送的数据并打印服务端:2.接收服务端发送的数据。2.将接收到的数据返回发送给客户端服务端代码#include <sys/types.h>#include <sys/socket.h>#include <netin

2022-04-28 16:52:00 329

原创 网络编程:TCP 客户端服务端简单例子

网络编程:TCP 客户端/服务端简单例子写在前面的话该例子比较简单,注释得也比较仔细。适合小白学习网络编程。了解TCP下C/S模型编程的基本流程,后续学习,复杂功能其实在process_xx函数实现即可。参考教材:Linux网络编程(第二版)前置知识:1.多进程:fork()函数 2.linux:标准输入0,标准输出1,标准错误2 3.socket:几个常用API题目(功能描述)客户端:1.客户端连接连接服务端后,从标准输入字符串发送给客户端。2.接收到客户端消息后打印出接收到的消息服务端

2022-04-28 15:52:18 325

原创 第一章 关于对象(Object Lessons)

介绍C++对象模型,内存布局,深度理解C++底层机制

2021-12-09 23:19:48 768

原创 条款 41 :了解隐式接口和编译器多态

条款 41 :了解隐式接口和编译器多态面向对象编程总是以显式接口和运行期多态来解决问题。我们看下面的代码:class Widget{ public: Widget(); virtual ~Widget(); virtual std::size_t size() const; virtual void normalize(); virtual swap(Widget& other); ...};void doProcessing(Wid

2021-11-28 23:06:20 160

原创 Lambda表达式

Lambda表达式Lambda表达式是一个可以调用的代码单元,可以将其理解为一个未命名的匿名函数。与普通函数类似,一个Lambda有一个返回类型,参数列表和一个函数体,但是不同的是,Lambda可以定义在函数内部。Lambda表达式如下:[capture list](parameter list)->return type{function body}[capture list] :表示Lambda所在函数的局部变量的列表,一般为空。其余和一般函数无差别。Lambda可以忽略参数列表

2021-11-28 23:05:50 1240

原创 LeetCode 430 | 扁平化多级双向链表

LeetCode 430 | 扁平化多级双向链表题目题解第一次没有理解对题目,看错了要求,用了队列,扁平化后的顺序不合题目要求,不过幸苦敲的,还是记录一下队列的实现代码:/*// Definition for a Node.class Node {public: int val; Node* prev; Node* next; Node* child;};*/class Solution {public: Node* flatt

2021-11-27 16:32:08 447

原创 LeetCode 138 | 复制带随机指针的链表

LeetCode 138 | 复制带随机指针的链表题目题解用map给新申请的结点和原结点建立意义对应的关系,之后一次遍历map通过first(原结点)方便对second(新建的结点)修改。/*// Definition for a Node.class Node {public: int val; Node* next; Node* random; Node(int _val) { val = _val; nex

2021-11-21 14:45:21 302

原创 LeetCode 234 | 回文链表

LeetCode 234 | 回文链表题目题解将链表的问题转化为数组问题,然后利用双指针解决,花了O(n)空间/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr)

2021-11-21 14:33:32 311

原创 LeetCode 328 | 奇偶链表

LeetCode 328 | 奇偶链表题目题解遍历链表,用两个向量表示两个子链表,然后合并,不是原地修改,花了O(n)的空间。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(n

2021-11-21 11:37:10 323

原创 LeetCode 203 | 移除链表元素

LeetCode 203 | 移除链表元素题目题解基本思想就是遍历链表,遇到相等的就删除,关键是引入哑结点,工作指针保持在待检查的元素前面,保证能进行删除操作。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x)

2021-11-19 23:27:49 3422

原创 LeetCode 142 | 环形链表 II

LeetCode 142 | 环形链表 II题目题解用哈希表:访问过的结点都放在哈希表里,每次访问结点前检查结点是否在里面,如果在那么该返回的就是这个节点了。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Sol

2021-11-18 22:41:39 297

原创 LeetCode 707 | 设计链表

LeetCode 707 | 设计链表题目题解就是最基础的链表,直接上代码//C++单向链表模板class MyLinkedList{private: struct ListNode { int val; ListNode *next; ListNode(int x):val(x),next(nullptr){} }; ListNode* head;public: MyLinkedList():head(

2021-11-18 21:08:24 355

原创 LeetCode 19 | 删除链表的倒数第N个结点

LeetCode 19 | 删除链表的倒数第N个结点题目题解解法1:一次遍历求出链表长度,然后就简单了,代码很简单/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr)

2021-11-13 22:54:22 209

原创 LeetCode 11 | 盛水最多的容器

LeetCode 11 | 盛水最多的容器题目题解解法一:暴力两层循环,找出最大的盛水量,很显然会超时class Solution {public: int maxArea(vector<int>& height) { int ans=0; for(int i=0;i<height.size()-1;++i){ for(int j=i+1;j<height.size();++j){

2021-11-13 22:33:06 527

原创 LeetCode 6 | Z字形变换

LeetCode 6 | Z字形变换题目题解按行遍历:思路:分析题目可以发现整个字符串按Z形变换被分成了numRows行(前提:s.size()>numRows),所以我们按照Z形变换的方式一次构建每一行,我们用curRow代表当前所处行,可以发现每当curRows=0或numRows-1是才会改变按行依次构建的遍历方向。class Solution {public: string convert(string s, int numRows) { if(nu

2021-11-12 20:12:01 3999

原创 条款 40 :明智而省慎地使用多重继承

条款 40 :明智而省慎地使用多重继承Use multiple inheritance judiciously.多重继承是C++的一个特色。对于多重继承,C++社群也有两种观点,一种认为多重继承是好的,另一种则认为应不要使用多重继承。我们来看一段多重继承的代码:class BorrowableItem{//图书馆允许你借某些东西 public: void checkOut();//离开时进行检查 ...};class ElectronicGadget{ pr

2021-11-12 18:24:30 675

原创 条款 39 :明智而省慎地使用private继承

条款 39 :明智而省慎地使用private继承Use private inheritance judiciouslyprivate继承并不意味着一种is-a关系。我们来看看代码://和条款32,这次改用private继承class Person{...};class Student:private Person{...};//private继承void eat(const Person& p);//人都会吃void study(const Student& s);//学生

2021-11-12 18:24:01 115

原创 条款 38 :通过复合塑模出has-a或“根据某物实现出”

条款 38 :通过复合塑模出has-a或“根据某物实现出”Model “has-a” or “is-implemented-in-trems-of” through composition.**复合(composition)是类型之间的一种关系,当某种类型对象内含有其他类型对象时就是这种关系。**它实际上意味着一种has-a关系或“根据某物实现出”。这节不想写,下次一定...

2021-11-12 18:23:11 60

原创 条款 37 :绝不重新定义继承而来的缺省参数值

条款 37 :绝不重新定义继承而来的缺省参数值Never redefine a function’s inherited default parameter value我们在条款36刚刚说过继承non-virtual函数是错误的。所以本条款更确切的说是:绝不重新定义继承而来的带有缺省参数值的virtual函数。理由很明确:virtual是动态绑定,而缺省参数是静态绑定动态绑定又叫后期绑定,静态绑定又叫前期绑定。我们来复习一下两者区别吧:我们先说一下静态类型和动态类型的概念:对象的所谓静态类型就是

2021-11-12 18:22:16 388

原创 条款 36 :绝不重新定义继承而来的non-virtual函数

条款 36 :绝不重新定义继承而来的non-virtual函数Never redefine an inherited non-virtualfunctionclass B{ public: void f(); ...};class D:public B{...};D x;//x是一个类型为D的对象//1B* pB=&x;//获得一个指针指向xpB->f();//经由该指针调用f//2D* pD=&x;//获得一个指针指向xpD->

2021-11-12 18:21:45 241

原创 条款35 :考虑virtual函数以外的其他选择

条款35 :考虑virtual函数以外的其他选择这节好多设计模式相关,留着以后补。

2021-11-12 18:21:14 199

原创 条款 34 :区分接口继承和实现继承

条款 30 :考虑virtual函数以外的其他选择Consider alternative to virtual functions假设你在写一个游戏,其中有一个反映人物血量状态的函数,不同的人物有不同的生命计算方式,所以将其声明为virtual;我们没有声明为pure virtual意味着我们该给他一份缺省实现。class Game{ public: virtual int healthValue()const;//返回人物健康指数

2021-11-12 18:18:51 69

原创 LeetCode 3 | 无重复字符的最长字串

LeetCode 3 | 无重复字符的最长字串题目题解想法很简单,遍历字符串,在每一个位置检查以该字符开始能够生成的最长子串。用到容器set。class Solution {public: int lengthOfLongestSubstring(string s) { int len=0; set<char> myset; for(int i=0;i<s.size();++i){ myset.cl

2021-11-07 20:55:40 34

原创 条款 33 :避免遮掩继承而来的名称

条款 33 :避免遮掩继承而来的名称Avoid hiding inherited names.我们先来看看什么是遮掩:int x;fun(){ double x; cin>>x;}对于上面的代码来说我们输入的是double型的x,而不是int型的。因为他被遮掩了。C++的名称遮掩规则(name-hiding rules)所做的唯一事情就是:遮掩名称。至于名称是不是相同的类型并不重要。从上面的例子也能看出来。我们来看看继承中的名称遮掩:class Bas

2021-10-24 14:02:59 131

数据结构课设答辩.pptx

ppt

2021-07-30

数据结构课程设计报告.docx

大二数据结构结课的实验报告,完成了常见算法的性能比较。C++实现,代码写得比较简单

2021-07-30

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

TA关注的人

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