自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 _stdcall与_cdecl区别

文章转载自 leehong2005, 原文链接:_stdcall 与 cdecl 区别基本定义_cdecl:是C和C++程序的缺省调用方式。每一个调用它的函数都包含清空堆栈的代码,所以产生的可执行文件大小会比调用_stdcall函数的大。函数采用从右到左的压栈方式。VC将函数编译后会在函数名前面加上下划线前缀。_stdcall:是Pascal程序的缺省调用方式,通常用于Win32 Api中,函数采用从右到左的压栈方式,自己在退出时清空堆栈。VC将函数编译后会在函数名前面加上下划线前缀,在函数名后加上"

2020-09-24 20:30:51 3083

原创 从最小(大)栈到最大(小)队列,再到单调队列

引言很长一段时间没有写博客,也没有刷 leetcode 了。这两天又刷了一下,发现还是生疏了不少。做 239. 滑动窗口最大值 的时候,发现有用单调队列的做法,突然想起了 剑指 Offer 59 - II. 队列的最大值 可不就是单调队列嘛。所以和最大(小)栈问题一起,做个总结记录以备查看。最小栈问题简单说明一下最小栈问题:设计一个栈结构,可以支持栈原有的push, pop,top 操作,同时加入 min 操作可以返回当前栈的最小值。问题分析: 原本栈是一个单进单出的结构,先进后出。要求返回栈的最小

2020-07-18 22:47:47 355 1

原创 STL源码阅读——set 源码阅读

前言最近刷题有用到set, 于是突然来了兴致,就想了解 STL 中set 的实现。说起set,立刻就能想到的有几点,set 底层用红黑树实现,set 是天然有序的,set 可以去重(不包含重复元素,当然 multiset 可以)。然而还是想对 set 的实现做个了解,比如到底是怎么插入删除的?侯捷大佬的 《STL源码剖析》很不错,菜鸡本鸡没有好好看。带着侯捷大佬的名言“源码面前无秘密”,看了一下 set 的源码,做个简单记录。主要关注set 的插入删除数据,至于红黑树的实现,就不深究了。不同C++版本.

2020-05-30 23:07:28 860 2

原创 C++单分派和双分派问题

分派说的是根据对象的类型和参数类型来确定最终调用的实际函数,体现出来也就是多态性。C++多态一般分为两种,一种是静态多态,也就是通过重载(同名不同参)以及通过模板的实现;另一种就是动态多态,也称运行时多态,通过虚函数的继承与重写来实现的。单分派:也就是只能同时进行一种方式的分派,也即要么就是通过重载实现静态多态,要么就是通过虚函数继承实现运行时多态。具体化表现就是:只能根据对象的动态类型以及参数的静态类型,来确定实际调用函数。双分派:也就是可以在支持静态多态的基础上再进行动态多态。可以根据对象的动态

2020-05-30 16:13:26 739

原创 面试基础知识点收录

收录一些觉得讲得比较好的以及能快速复习知识点的文章,有时间还是需要看书进行系统的了解。数据库48讲B+树:MySQL数据库索引是如何实现的我以为我对Mysql索引很了解,直到我遇到了阿里的面试官MySQL复习:20道常见面试题(含答案)+21条MySQL性能调优经验目前看过最全的一线大厂MySQL面试题(题+详解)MySql 三大知识点——索引、锁、事务跟面试官侃半小时...

2020-04-16 22:32:29 164

原创 谈谈C++构造函数和析构函数那些事儿

1. 基础概念构造函数:在C++对象创建的时候,自动调用,一般用于对象的初始化。没有返回类型,函数名与类名一致。析构函数:用于在程序结束时自动销毁对象,也可显式调用销毁。没有返回类型,没有参数,函数名为 ~ + 类名C++中,构造函数和析构函数在每一个类中都有缺省实现,所以不定义构造函数和析构函数,也是可以正常运行的。2. 构造函数的重载:构造函数可以分为带参数和不带参数两种...

2020-04-06 22:10:44 444

原创 leetcode题集: 72. 编辑距离

题目大意:给定两个字符串,求解将 word1 转化成 word2 的最小操作。操作有三个,替换,增加和删除。题目分析:突然给定一个这样的题目,求解有效可能集合中的最优解。第一想法当然就想到了动态规划,可是怎么找状态转移方程呢?又应该选择哪个状态呢?一般能想到两个,一个是dp[i][j], 表示长度为 i 的Word1 转化为长度为 j 的word2所需要的最小操作数;另一个就是用一维...

2020-04-06 15:31:37 110

原创 2020腾讯实习生招聘面试算法题

主要是从同学这打听到的,于是自己也写了一下。第一道就是叫手写一个堆排序,第二道是写幂,第三道链表反转。堆排序堆排序其实就是叫建堆嘛,最大堆和最小堆,之前也写过,具体见 堆和堆排序。这次写的时候写成了模板,想着要好点。#include <iostream>#include <algorithm>using namespace std;// 两个比较仿函...

2020-03-27 12:03:43 1015

原创 Git常用指令

git 作为一个作为一个版本控制工具,熟悉掌握 git 指令十分必要。1. 基础指令git init #本地仓库初始化, 执行完会在当前文件夹出现 .git文件夹git add <filename> #添加需要管理的文件, eg. git add .# 添加远程仓库地址,origin指名称,url是远程仓库地址,可以是 https...

2020-03-25 22:09:38 151

原创 leetcode题集: 面试题 01.06. 字符串压缩

leetcode中文最近出的每日一题活动,一道简答题,但是却让我提交了好几次,而且错了好几次。 故此记录一下题目分析:字符串压缩, 没啥特别的意义。就是字母加数字的方法,很常见。要求,如果压缩之后的字符串比原来的没有变短,那就返回原来的字符串,否则返回压缩之后的字符串。题目意思很清楚,很明了,那就直接开始上代码了,很快可以写出来:class Solution {public:...

2020-03-16 23:36:28 238

原创 Linux: 如何有效杀死一个进程

真的是每天不写几个bug浑身难受!正常杀死进程# pid 就是执行程序的进程号kill pid# pid 可用 ps -a 查看ps -a# 如果当前进程太多,可以用 grep 进行一下筛选ps -a | grep program 或者ps -ef | grep program起因是因为先执行了一个程序,让其进入死循环,然后用 Ctrl+Z 将其后台挂起,现在想杀...

2020-03-13 18:08:51 2097

原创 leetcode题集: 45. Jump Game II

题目大意:就是给定一个非负数组,求到最后一个的最小跳数。每次跳动范围不超过当前索引的数值。举个栗子,当前在0号位置,最多只能跳到+2,也就是2号位置。题目分析:第一感觉,就是个动态规划嘛。很快动态转移方程:dp[j] = min(dp[j], dp[i]+1) ,i = 0....j。于是很快写出了以下代码:class Solution {public: int jump(...

2020-03-05 12:35:26 165

原创 leetcode题集: 44. Wildcard Matching

题目大意:简化版的正则表达式匹配,给定一个待匹配字符串和一个pattern字符串,返回pattern字符串是否能匹配。特殊匹配符号有两个,'*' 和 '?'。题目分析:首先看两个特殊符号的表示范围'?': 所有单个字符;(一个坑,这里单个字符不包括空,提交次数+1)'*': 任意字符序列,可以是空序列考虑使用递归来解决这个问题。匹配过程分为几种情况来讨论:1) s 匹配...

2020-03-04 23:11:21 157

原创 leetcode题集: 41. First Missing Positive

题目大意:给定一个乱序的整型数组,找出最小的缺失的正整数。简单来说,就是找出数组中没有的最小正整数题目分析:题目的难点在于他的要求,要求O(n)时间和常量空间。这下就直接把排序(时间复杂度不满足)和额外数组打表(空间复杂度不满足)两个方法给排除了,这是我第一反应能想到的两个方法。简单解释一下打表:常用的空间换时间方法,即用一个数组记录,数组位置上的元素放的就是 位置的值,也即 a[i] ...

2020-03-04 12:01:11 149

原创 leetcode题集: 32. Longest Valid Parentheses

题目大意:求最长有效括号的长度。此前有个简单的题,就是求所给字符串括号是否匹配,这个题的话所给的字符串并非都是有效的括号匹配。题目分析:看这个题首先需要知道有效括号的几种情况。一种呢,就是串联并列的括号,eg. "()()()()()()"; 二是括号嵌套的情况,eg. "(((())))";那么第三种呢就是两种的结合了,既有并列又有嵌套,"()((()()))"首先嵌套...

2020-03-03 11:47:59 138

原创 OMNet++: Windows下安装与入门示例

因为疫情原因,没办法去学校,只能在家里笔记本也装一个这个了。OMNet++安装OMNet++下载去官网找到Windows版本的下载最新版,不要去网上其他网站上下。官网链接:https://omnetpp.org/download/。下载完成之后,解压到想安装的目录下。注意:安装目录不能有空格!!!OMNet++安装其实安装过程在下载的解压文件里有,比如我的目录就是,H:\omn...

2020-02-27 19:44:09 2594 7

原创 leetcode题集: 29. Divide Two Integers

一道看起来比较简单的问题,但是提交了好几次才提交上去,不是超时就是某些边界问题考虑不全面。题目大意:整数除法。要求不要乘除和模运算等。特别说明:除数和被除数都是32位有符号整数;除数不会为0(不用自己考虑了);第三点(之前没注意):溢出则返回最大整数题目分析:题目读下来,还是大致清楚的。那么既然不能用乘除和模运算,那只能采用减法了吧。但是由于正负数边界问题,修改了几次;而且说明...

2020-02-27 13:47:19 278

原创 leetcode题集: 37. Sudoku Solver

37.Sudoku Solver之前说到那个数独的有效性检测,并不是要求解,而是简单的做个判断,这道题就是数独的求解。题目大意:数独求解。假定每次的样例有且仅有一个唯一解题目分析:看到这个问题,第一反应就是使用递归来解决。递归步骤可以分为:1)空格寻找 。 2)有效数字寻找(即一行,一列,一个3x3单元格中每个数字都只能出现一次)递归终止条件:空格检查完了最后一个空格...

2020-02-26 20:21:25 117

原创 leetcode题集: 36. Valid Sudoku

第15题:36.Valid Sudoku题目大意:检查数独是否有效;即每行,每列和每个3x3小格子是否存在重复的数字。注意要点:1. 数独有效并不等同于有解(开始以为是要解出数独,还以为难度有点大)2. 只有提到的单元需要进行规则检测,也即是row,col和3x3 box需要做这些检测3. 所给字符只会有数组1-9和 '.'4. 边界大小9x9题目分析:题目...

2020-01-30 17:22:51 160

原创 C++虚函数与纯虚函数

C++的虚函数与纯虚函数C++项目看起来真的是太恼火了,源码阅读起来有点不便,幸亏有source insight 保命。C++有个很重要的特性,那就是多态。多态的实现主要是两种方式:一个就是函数的重载,另一个就是继承中对虚函数的重写。虚函数的引入对C++大型项目接口设计统一标准起到了非常重要的作用,与虚函数相对应的就是纯虚函数。虚函数:用 virtual 标识标记的函数就是虚函数,只含有虚...

2020-01-05 22:54:08 561

原创 C++ 类的public,protected, private继承

很长一段时间没有写过C++的类了,写多了Java发现不太会写C++了。我们知道,C++有三种访问类型,分别是public,protected和private。成员函数和成员变量面向对象具有封装性。所谓封装是类外部而言,类成员函数之间没有访问限制。为了达到封装的效果,有些成员变量,类是不需要暴露给外部的。于是有了 public 变量(或函数) 和 private 变量(或函数),public...

2019-12-31 16:40:00 359

原创 逻辑与、或和条件与、或

今天在看先看一个问题的时候,发现了有人问判断条件里为什么不用 & 和 | ?只记得以前学习C的时候,老师就说条件判断要用 || 和 && ,而不是 | 和&,也就一直这么用了。我们知道逻辑与或是逻辑运算符,那么既然是运算符,那肯定是有运算结果的;而条件判断也是一种运算,只不过它的结果只有true和false,也就是对应1和0。既然逻辑运算结果包含0和1,那么某些...

2019-12-26 17:11:38 2539

原创 Linux下C++/C 编译生成.a 或者.so 库文件

最近因为阅读源码的工作,需要自己编译一些 .so 文件或者 .a 文件,查了一些资料,写了一些示例,记录一下。静态库和动态库一般程序编译的过程可以分为编译和链接两个阶段。链接阶段,需要把所有的obj文件(.o)链接起来,生成可执行程序,这个过程可以链接其他外部的库文件。 有时候也有省略写法。gcc -c test.c #源文件编译,生成 .o 文件gcc -o tes...

2019-12-18 22:27:51 11140 1

原创 树的旋转和AVL树

AVL树是一种自平衡二叉搜索树,由. M. Adelson-Velsky和E. M. Landis,在他们1962年的论文《An algorithm for the organization of information》中发表。名声很大,就算自己没写过,也应该都听说过。这两天也是重新看了一下,记录一些理解。1. AVL树简介AVL树首先是一个二叉搜索树,然后AVL树中任何两个子树的高度差...

2019-11-30 21:54:46 315 1

原创 未初始化局部变量问题与编译器优化

本文针对C/C++语言,不知道其他语言的是否会一样。首先开一个超大(爆栈)数组,int[40000000000],代码如下:#include <iostream>using namespace std;int main(){ // 下列取消注释,都是单个操作,控制变量 int a[4000000000]; // 只这样定义一个数组...

2019-11-26 11:28:42 1703

原创 全局变量和静态变量以及内存堆栈的关系

在编写程序时,内存的控制是很重要的一部分。关于全局变量和局部变量,静态变量的关系如何?以及他们在内存在是存储于哪部分的?做个记录,以便往后查看。1. 全局变量和静态变量全局变量:又称外部变量,与之相对的是局部变量,是从变量的作用域上来考量的。全局变量定义与函数外面,作用于整个程序;而局部变量则是定义在函数里面,仅作用于函数内部,无法跨函数作用。全局变量为静态分配,即程序执行之前就进行内存分...

2019-11-25 22:43:57 2473

原创 ubuntu如何查找程序安装目录

如果是已安装的程序,那么查看用dpkg指令# 以gcc为例dpkg -L gcc dpkg -L sublime-text-installer结果如下:会查找出很详细的信息如果是未经过安装的程序,那么有一个比较方便的方法,就是打开程序,然后看看程序状态并查找#以未安装的sublime为例ps aux | grep sumlime*结果如下:...

2019-11-22 22:36:06 1758

原创 VirtualBox:Ubuntu16.04虚拟机无法使用粘贴板

一直在用VirtualBox虚拟机,比较方便。但是如果不能和主机共享粘贴板,那就很麻烦了。借由我最近遇到的粘贴板无法使用的问题,就来记录汇总一下一些问题的解决方法。1. 设置问题VirtualBox虚拟机共享粘贴板是需要设置的,在没开机之前,设置->常规->高级,设置共享粘贴板为双向,同时设置拖放双向(虽然从来没拖放成功过。。。)。然后启动虚拟机之后,工具栏-设备,设置同样的双...

2019-11-22 15:49:13 3651 3

原创 leetcode题集: 28. Implement strStr()

第14题:28. Implement strStr()题目大意:给出两个字符串,求解待匹配串在主串中的位置,如果不是主串的一个子串,则返回-1;如果待匹配串为空的话,则返回0;这与C 中的strsstr()函数一致。题目分析:一个字符串匹配的求解。第一个印象就是想到了KMP算法,字符串匹配。但是抱着试一试的心理,也用暴力法做了一个求解。暴力法求解:直接莽,看代码:clas...

2019-11-18 11:13:58 145

原创 KMP算法和字符串匹配

KMP算法是一个很经典的字符串匹配算法,以前只在算法课上写过作业,现在想起来,发现还是不会写了。所以再次温习记录一下。字符串匹配我们考虑如果不用KMP算法的话,暴力法做字符串匹配,简单写一下就是一个二重循环的写法,也就是,复杂度是相当高的。int n_strStr(string str1, string str2) // 在str1 中匹配 str2 字符串{ int...

2019-11-18 10:45:20 213

原创 关于宏定义: x##y

最近看源码的时候发现了一个这个宏定义:#difine__OPPCONCAT1(x,y) x##y。表示一脸懵逼,查找之后发现,是一个变量名连接的用法,x##y表示的就是xy这个变量。注意是名字连接,不是变量数值的连接。举个栗子:#include <iostream>using namespace std;#define test(x, y) x##yint main...

2019-11-04 16:37:48 3454

原创 leetcode题集: 210. Course Schedule II

第13题:210.Course Schedule II类似之前写的那篇,这里就不分析了。题目具体分析请见leetcode题集: 207. Course Schedule和 拓扑排序 两篇文章。就是拓扑排序,加个打印输出拓扑序列。这里直接贴代码了:class Solution {public: vector<int> findOrder(int numC...

2019-11-01 11:23:11 165

原创 leetcode题集: 207. Course Schedule

上次写了关于拓扑排序的写法,今天这个题就是关于拓扑排序的应用与改进。第12题:207.Course Schedule文章大意:课程安排,课程之间有依赖性。给定课程数,和课程之间的依赖,判断课程能否顺利完成。题目分析:这不就是之前写的拓扑排序能干嘛吗?所以这是一个拓扑排序的问题,所以啊直接开始干。要注意的是,后面给数组中,后面一个表示前驱节点。即[1,0]表示的是0->1....

2019-10-31 11:42:58 214

原创 拓扑排序

今天偶然看了拓扑排序,想了一下,发现已经忘记了。于是重新炒了一下冷饭,记录一下。要会写拓扑排序那得先知道什么是拓扑排序,然后是拓扑排序能干嘛,最后才是怎么实现拓扑排序。一、什么是拓扑排序首先拓扑排序针对的对象是一个有向无环图,将图中的节点排成一个线性序列,这就是拓扑排序。线性序列要求满足,图中任意一对节点若存在有向边,则必然是在的前面。满足这个条件的序列,叫拓扑序列,得到这个拓扑序列的...

2019-10-29 16:57:24 1272 1

原创 Ubuntu16.04:NS2安装与入门实例

NS2是一个全开源的比较成熟的网络模拟器,与之相对有的有商业付费软件OPNet。因为工作需要,所以对NS2进行了调研,安装并简单使用了一下,做个记录。NS2早在2011年就已经不维护了,这算是考古了。一:NS2简单介绍NS2是面向对象的、开源的离散事件模拟器。可用于仿真各种不同的IP网,实现有一些MAC层协议。注重低级协议仿真,监视,分析包踪迹和队列行为。NS2采用系统编程语言C++和...

2019-10-28 12:10:27 1585 3

原创 leetcode题集:343. Integer Break

第11题:343.Integer Break怎么说呢,水题一时爽,一直水题一直爽。题目大意:给定一个正整数,使他等于至少两个数之和,并求这些加数的最大积。题目分析:题目意思很清楚,就是求给定和的加数的最大积。动态转移方程:,其中。直接上代码:class Solution {public: int integerBreak(int n) { if(n=...

2019-10-26 12:20:00 158

原创 leetcode题集: 357. Count Numbers with Unique Digits

第10题:357.Count Numbers with Unique Digits题目大意:求给定位数的不包含重复数字的整数。。。不用说了,超级大水题,就是一个排列组合,简单的数学题 。题目分析:求出当前位数非重复的整数数量,非要说动态规划,那就是加起了之前低位数的。(ps: 我不是为了凑题数,手动狗头)。直接上代码好了:class Solution {public: ...

2019-10-26 11:11:05 139

原创 leetcode题集: 322. Coin Change

实在是太懒了,写博客真的懒得写。今天就一起写几篇动态规划的好了第9题:322.Coin Change题目大意:就是换零钱!给出可换的零钱种类,求最后换得零钱的最小张数(coin的个数),每种可换的零钱数目无限。题目分析:思路很明确,就是找零钱从最大的开始找呗,依次找当前可换的最大数额的零钱,显然可以用动态规划的思想解决,是一个很简单的动态规划问题,状态转移方程: ...

2019-10-26 10:54:36 179

原创 OMNet++: import 项目导入问题

OMNet++编译器时集成eclipse平台,所以项目导入方法和eclipse一样,file -> import -> General -> Exiting projects into workspace,找到相应项目文件夹即可。然后把所有明显bug都解决了之后,运行提示No Such Net Type. 网络描述文件无法识别,打开Ned文件,发现有提示:说不是一...

2019-08-17 17:38:19 5907 2

原创 堆和堆排序

这两天突然想到了堆排序,然后就写了一下,并花点时间整理记录。堆说白了就是一个二叉树,不过不是普通的二叉树,堆是一个完全二叉树。二叉树有普通的二叉树,完全二叉树和满二叉树。完全二叉树:除最后一层外,所有的层数即是满节点。层间节点和层(除最后一层)之间存在:,是层数。满二叉树:除叶子节点外,所有的节点都是满子节点,即2个子节点。国内也有说是必须节点数达成当前层数最大节点数的,即是,这里以...

2019-07-23 20:07:23 240

mpich3.3_free.tar

mpich3.3资源源码,不要积分。。好不容易才上传上来 默认5积分,还不能改,我也是没办法

2019-05-09

空空如也

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

TA关注的人

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