Zacky_ran
码龄7年
关注
提问 私信
  • 博客:32,705
    32,705
    总访问量
  • 33
    原创
  • 319,468
    排名
  • 18
    粉丝
  • 0
    铁粉

个人简介:keep learning.

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:四川省
  • 加入CSDN时间: 2017-09-26
博客简介:

sinat_40408114的博客

查看详细资料
个人成就
  • 获得51次点赞
  • 内容获得19次评论
  • 获得136次收藏
创作历程
  • 3篇
    2020年
  • 31篇
    2019年
成就勋章
TA的专栏
  • Linux学习
    1篇
  • Windows开发
    1篇
  • c++primer5th的示例程序
    5篇
  • 数据结构、算法与应用
    21篇
  • LeetCode
  • C++的一些坑
    3篇
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

180人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

Visual Studio调试时提示找不到MSVCP140D.dll文件

由于好久没有使用过这台电脑上的VS2019了,今日做一个小test的时候,发现Debug模式突然无法调试运行,Release模式则没问题。百度则是千篇一律的下载dll文件,可问题是我的系统文件夹下所有dll文件都是齐全的。经过查阅,发现是VS的代码生成模式不正确。在Visual Studio中,依次选择Project -> Properties - > Configuration Properties -> C/C++ -> Code Generation ->Runtim
原创
发布博客 2020.08.11 ·
4686 阅读 ·
21 点赞 ·
6 评论 ·
17 收藏

Makefile编写入门

参考:一篇由浅入深、很全面的博客:https://www.jianshu.com/p/442e71755643此博客中的参考模板:#makefile模板# 这句是链接时候的命令,在g++前面加入了@echo linking $@# 这样在链接时候就会先输出linking xxx,# 这行直接写g++也是没有任何问题的LINK = @echo lingking $@ &&am...
原创
发布博客 2020.04.12 ·
312 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Windows C# WPF编程一些tips

1.后台创建(通过代码动态创建)的控件,光设置Element.Name是无法通过FindName(string name)来获取到该控件的。必须使用RegisterName(string name,object scopedElement)来将该控件注册到当前的 XAML 名称范围中。2.对于动态创建的控件,在动态Element.Children.Remove(object)后,还需要UnReg...
原创
发布博客 2020.03.25 ·
304 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Win32环境下解析DNS/IPV4/IPV6获取IP地址

win32环境下,根据域名或者ipv4或者ipv6进行ip地址的解析。微软官方文档:getaddrinfo function#include <iostream>#include <vector>#include <WS2tcpip.h>#include <winsock2.h>using namespace std;// link...
原创
发布博客 2019.11.18 ·
936 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

平衡搜索树--AVL树的实现

平衡搜索树在原来的二叉搜索树我们提到,如果对普通的二叉搜索树连续有序地插入会导致二叉搜索树退化成链表,操作复杂的从O(log N)退化到O(N)。而AVL树和红黑树这些平衡二叉树就是避免这种最坏情况的出现,对左右孩子子树高度差大于2时进行重新调整,让搜索树始终保持一个健康的状态,保证相关操作都在O(log N)。同时关于STL,哈希表<unordered_map>(原为<has...
原创
发布博客 2019.08.23 ·
278 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

二叉搜索树

二叉搜索树二叉搜索树是一颗二叉树,可能为空。一棵非空的二叉搜索树满足以下特征:1).每个元素有一个关键字,并且任意两个元素的关键字都不同;因此,所有的关键字都是唯一的(如果有重复的话,这样的二叉树称为有重复的二叉搜索树)。2).在根节点的左子树中,元素的关键字(如果有的话)都小于根节点的关键字。3).在根节点的右子树中,元素的关键字(如果有的话)都大于根节点的关键字。4).根节点的左右子...
原创
发布博客 2019.08.13 ·
435 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

基于优先队列的应用--堆排序和霍夫曼树

堆排序堆排序就是将数组堆化,大根堆小根堆的根元素永远是最大或者最小的,于是我们取根元素然后调整堆,继续一下次的堆化,不断重复直到取完(或者只剩下根元素)。此处采用大根堆,将根元素也就是数组的[0]元素不断放到数组的末尾。大根堆的实现可见大小根堆的实现。#pragma once//=============================基于根堆的应用--堆排序===============...
原创
发布博客 2019.08.10 ·
271 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

优先级队列--大根堆和小根堆

概述与FIFO的普通队列不同,在优先级队列中,元素出队顺序是由元素的优先级决定。比如大根堆是最大的元素先出队,小根堆是最小的元素先出队。堆是实现优先级队列效率很高的数据结构(当然我们也可以使用无序的线性表或者有序链表来实现,但是它们的删除、插入的时间复杂度至少有一个是O(n))。堆是一棵完全二叉树,这样就保证了底层存储的数组拥有很高的空间利用率。无论是大根堆还是小根堆,它们的插入和删除的复杂性...
原创
发布博客 2019.08.10 ·
3416 阅读 ·
0 点赞 ·
0 评论 ·
4 收藏

快速排序C++

单趟排序两种交换方法,一种是找到一个元素移动一个元素到对面,另外一种是找到左元素和找到右元素后交换。为什么快排每次必须从右边开始的原因见注释。找一个元素换一个元素#include <iostream>//单趟排序int partition(int a[],int low,int high) { int key = a[low];//通常将左边第一个元素作为基准元素key ...
原创
发布博客 2019.08.05 ·
411 阅读 ·
0 点赞 ·
0 评论 ·
5 收藏

基于二叉树的前序、中序、后序以及层次遍历迭代器

本文基于二叉树的实现中类似的二叉树结构,其要求节点结构只有左右孩子而无父节点的二叉树。因此,只能靠队列/栈来存储遍历的路径信息,模拟递归调用的过程。同时,本文中迭代器的判断operator==/!=只能通过判断队列/栈中的路径信息来实现。严格地讲,本文的迭代器不如叫作伴随类。因为它不够轻量,一般的迭代器只保存指针信息,而本文的迭代器使用了队列/栈。其中,前序、中序、后序迭代器的栈最大为O(...
原创
发布博客 2019.08.04 ·
642 阅读 ·
3 点赞 ·
0 评论 ·
6 收藏

二叉树的实现C++实现

树的基本性质定义:1.一棵树t是一个非空的有限元素的集合,其中一个元素为根(root),其余的元素(如果有的话)组成t的子树(subtree)。2.一棵树的高度(height)或深度(depth)是树中级的个数。3.一个元素的度(degree of an element)是指其孩子的个数,叶节点的度为0。一棵树的度(degree of a tree)是指其元素的度的最大值。二叉树定义...
原创
发布博客 2019.08.04 ·
768 阅读 ·
4 点赞 ·
0 评论 ·
9 收藏

基于哈希表的应用--LZW压缩和解压算法

关于哈希表的实现。本文实现的LZW解压算法主要应用了链式哈希表。关于Lempel-Ziv-Welch开发的LZW压缩/解压算法,具体可以参考这位博主的文章:LZW压缩算法的原理解析,本文就不多赘述了,算法具体实现的想法和思考可以看看代码的注释,这次的代码我注释的还是挺多的了。LZW压缩算法的C++实现//=========================================LZW...
原创
发布博客 2019.07.26 ·
1190 阅读 ·
1 点赞 ·
1 评论 ·
7 收藏

基于散列表(线性探查的哈希表和链式散列)的字典实现

字典的另一种表示是散列。它用一个散列函数(也称哈希函数)把字典的数对映射到一个散列表(也称哈希表)的具体位置。与跳表相比,它把操作的时间提高到渐近等于1,但最坏情况下依然是渐近等于N。但是如果经常输出所有元素或按照顺序查找元素(如查找第10个最小元素之类),跳表的执行效率将优于散列。基于跳表的字典实现散列函数和散列表1.桶和起始桶当关键字范围太大,不能用理想方法表示时,可以采用并不理想的散...
原创
发布博客 2019.07.26 ·
1591 阅读 ·
2 点赞 ·
10 评论 ·
12 收藏

基于跳表的字典实现

为有序链表增加额外的向前指针的链表叫作跳表(skip list)。它采用随机技术来决定链表的哪些节点应增加向前指针以及增加多少个指针。基于这种随机技术,跳表的查找、插入、删除的平均时间复杂度为O(logN)。然而在最坏情况下,时间复杂度却渐近等于N。关于跳表级数的确定在规则的跳表结构中,第i级链表的数对个数与第i-1级链表的数对个数之比是一个分数p,因此属于i-1级链表的数对同时属于第i级链表...
原创
发布博客 2019.07.26 ·
302 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

基于队列的应用--列车重排问题、电路布线问题、图元识别问题以及工厂仿真

本文使用到的队列的实现。列车重排问题、电路布线问题、图元识别问题,在以前都用过栈的数据结构来实现过(基于栈的应用–列车重拍问题、迷宫老鼠问题)。本文采用队列的实现,改变一些问题要求,但吸收、采用了上次同类型问题中的算法思想。列车车厢重排问题相较于使用栈来实现车厢重拍列的算法,主要区别有:缓冲轨道的改变,在栈实现中,我们要求缓冲轨道先进后出(FILO),而在本文中,我们要求其先进先出(FIF...
原创
发布博客 2019.07.22 ·
565 阅读 ·
3 点赞 ·
0 评论 ·
7 收藏

线性表--队列的数组实现

定义和应用队列(queue)是一个线性表,其插入和删除分别在表的不同端进行。它是一种先进先出(FIFO)的线性表,插入元素的一端称为队尾(bakc或者rear),删除元素的一段叫作队首(front)。以数组来实现,需要考虑空间的利用率。如果采用类似数组和栈一般的映射公式location(i)=i,那么每次删除数组前端(队首)元素需要将数组整体左移一位,显然效率低下。考虑新的映射公式locati...
原创
发布博客 2019.07.22 ·
313 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

基于栈的应用--列车车厢重排问题、开关盒布线问题、离线等价类问题、迷宫老鼠(深度优先、回溯)问题的算法实现

文章所用的栈stackArray见栈的数组实现。列车车厢重排问题一列货运列车有n节车厢,将原来的乱序列车车厢如[581742963]通过输入轨道后,在中转站中经过中转调度,将其有序地驶出输出轨道,如[987654321]。中转站有一个输入轨道,一个输出轨道和k个缓冲轨道。对缓冲轨道的要求为:缓冲轨道上面的车厢序号小于下面的车厢序号,即序号顶部往下为递增的;编号为u的车厢应该进入的缓冲轨道,其顶...
原创
发布博客 2019.07.16 ·
914 阅读 ·
1 点赞 ·
0 评论 ·
14 收藏

线性表--栈的数组实现和链表实现

把线性表的插入和删除操作限制在同一端进行就得到栈数据结构,因此栈是一个后进先出(LIFO)的数据结构。抽象数据类型ADT#pragma oncetemplate <typename T>class stackADT{public: virtual ~stackADT(){ }//虚析构函数 virtual bool empty() const = 0;//栈空返回true...
原创
发布博客 2019.07.15 ·
405 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

深入浅出重新理解递归思想,并重新思考经典递归算法(全排列以及汉诺塔)问题。

1.理解递归通过数学的分段函数f(n)={1n≤1 n∗f(n−1)n&gt;1f(n) = \begin{cases} 1 &amp; n \leq1 \\\ n*f(n-1) &amp; n \gt 1\end{cases}f(n)={1 n∗f(n−1)​n≤1n>1​或者数学归纳法,都能很好理解到递归的思想。因此,所有的递归函...
原创
发布博客 2019.06.20 ·
428 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

C++函数返回临时对象优化问题/RVO/NRVO

对于函数中返回临时对象时,现代C++编译器一般会支持返回值优化,减少临时对象的构造和析构。比如:Foo f(){ Foo result; //todo:(result); return result;}就比我们刻意为之的代码:Foo f(){ Foo result; //todo:(result); return std::move(result);}...
转载
发布博客 2019.06.15 ·
665 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏
加载更多