自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++ STL: map的按key和按value排序

相关内容: C++ STL: map自定义键值类型、C++ 函数对象(函数符)本文目录1. map定义2. 按key排序3. 按value排序4. 参考链接 1. map定义 在将map的排序之前,我们要知道它是STL里的一个模板类,用来存放<key, value>键值对的数据结构,定义如下。template < class Key, ...

2018-09-30 18:00:36 4995

原创 C++ STL: map自定义键值类型

相关内容: C++ STL: unordered_map自定义键值类型本章目录1. map定义2. 简单方法: 重载operator<()操作符3. 其它方法:自定义compare函数3.1 方法1: 利用std::function3.2 方法2: 比较函数的函数对象3.3 方法3: less函数的模板定制 1. map定义 map是STL里的一个模板类,用来...

2018-09-29 19:11:00 23191 9

原创 C++ STL:unordered_map 自定义键值类型

本文在参考Mark Nelson的文章的基础上,提出了自己的样例,整理了完整的unordered_map自定义键值机制。目录1. 问题抛出2. 三种解决方案2.1 方法 1 - 指向函数的指针2.2 方法 2 - 将哈希函数打包成函数对象2.3 方法 3 - std::hashT的特化1. 问题的抛出首先,我们来看一下unordered_map的参数构成。...

2018-09-12 22:32:04 33738 15

转载 Unity序列化全面解析

这篇博客讲得非常全面。感谢大大!

2019-08-16 10:44:32 310

原创 C++ 智能指针

目录1. 产生的原因2. 智能指针简介3. auto_ptr4. unique_ptr5. shared_ptr6. weak_ptr参考链接:auto_ptr 参考shared_ptr参考 1. 产生的原因 内存泄漏当我们当从堆中申请了内存后,如果不释放空间,就发生内存泄漏。内存泄漏的情景主要有一下几种:* new和delete没有匹配。* 没有正确清楚嵌套对象...

2019-04-16 15:05:28 386

原创 数据结构 - 伸展树 Splay Tree

目录一、什么是伸展树?二、Splay操作的设计模式三、旋转操作讨论四、删除操作五、完整程序 一、什么是伸展树?80-20黄金法则显示,日常中我们80%的访问发生在20%的数据上。如果我们能够把经常访问的节点推到靠近根节点的位置,那么就可以极大的提高访问速度。这就是伸展树的出发点,并实现了以下方案:每次查找节点之后对树进行重构(旋转操作),把被查找的节点搬移到树根。与二叉...

2019-02-23 02:34:27 758

原创 数据结构 - 二叉平衡树 AVL Tree

目录1. 平衡条件2. 失衡情景3. 两种旋转3.1 单旋转3.2 双旋转4. 插入、删除4.1 插入4.2 删除5. 完整程序二叉平衡树是基于二叉查找树的基础之上,增加了平衡条件,避免二叉查找树在一定次数的插入/删除操作之后,左右失衡。如果对二叉查找树不了解,可以点击这里。 一、平衡条件 除了二叉查找树的性质,平衡二叉树的每个结点,其左子树和右子树的高...

2019-02-23 00:22:14 305

原创 数据结构 - 二叉查找树 Binary Search Tree

目录:一、性质二、结点定义三、部分操作插入:唯一键值和重复键值删除:普通删除和懒惰删除四种遍历:先、中、后序、层级四、进一步思考 一、二叉查找树性质 若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;任意节点的左、右子树也分别为二叉查找树;树中没有键值相等的节点。 二、结点...

2019-02-22 23:31:44 586

原创 C++ delete释放内存的本质

在C++中,调用delete的时候,系统会自动调用已分配的对象的析构函数,然后释放指定内存。然而,通过验证可以发现,delete所谓的释放内存,只是将指定空间定义为可分配内存,该空间仍保留原有的值,且可以访问。测试样例#include <iostream>using namespace std;class A{public: int value; A * next; ...

2019-02-21 13:34:21 5565 4

原创 数据结构 - 十字链表之稀疏矩阵的存储

当数组中非零元素非常少时,我们可以称之为稀疏矩阵。为了减少空间的浪费,在存储稀疏矩阵的时候,我们对它进行压缩存储,即指存储非零信息。一、数组的顺序存储在存储稀疏矩阵的时候,除了存储非零元素的值,还需要存储其行列号i和j,故每个非零元素要用一个三元组(i, j, v)来描述。因为要与矩阵的对应关系,我们还需要在三元组表中增设非零元素的个数和矩阵行列大小。那么,稀疏矩阵的数组表达如下所示。st...

2019-02-19 14:51:33 9760

原创 C/C++ 数组的定义与初始化

一、普通数组1.1 memset//标准库里memset的源码void *(memset)(void *s, int c, size_t n) { const unsigned char uc = c; unsigned char *su; for (su = s; 0 < n; ++su, --n) *su = uc; ...

2019-02-18 21:43:55 5507

原创 C++ STL: Container

reference - http://www.cplusplus.com/reference/stl/在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器。简单来说,就是保存其它对象的对象.容器类自动申请和释放内存,因此无需new和delete操作。一、序列式容器 Sequence containers各元素之间有顺序关系的线性表...

2019-02-18 01:10:17 930

转载 位运算使用技巧

原码、反码、补码的概念 - 为什么要使用原码、反码和补码?- 同余原理https://www.cnblogs.com/zhangziqiu/archive/2011/03/30/ComputerCode.html位运算使用技巧http://www.matrix67.com/blog/archives/263...

2019-01-07 20:50:46 190

原创 C++命令行编译工具:MinGW的g++安装、开发人员命令提示

之前一直用Mac自带的g++对C++源文件进行命令行编译,这两天想转到windows平台上,发现命令行并不能直接用。因此,在这里记录一下简单的编译方法。本文的方法主要是按照微软官方文档来的,方法有一个前提:Windows10,并且已经安装了Visual Studio 2015及以上。满足了上述前提,可以进行如下操作对c++文件进行编译。1. 打开“开发人员命令提示”。打开方法参考这篇微软...

2018-10-08 21:01:41 1062

原创 C++ 函数对象(函数符)

本文主要参考:文章1、文章2。目录1. 什么是函数对象2. 函数对象的按值传递3. 函数适配器3.1 绑定器3.2 取反器4. 自定义容器的排序 1. 什么是函数对象 尽管函数指针被广泛用于实现函数回调,但是回调函数是来自C语言的,在C++中应只在与C代码建立接口,或与已有的回调接口打交道时,才使用回调函数。更重要的是,C++提供了另外一个可以实现回调函数的方法,那...

2018-09-29 15:39:58 1377

原创 C++ template 模板

1. 关于模板1.1 基本概念1.2 模板与普通类定义上区别2. 两种模板2.1 函数模板2.2 类模板3. 模板特化3.1 全特化3.2 偏特化4. 容器适配器5. 模板与虚函数5.1 模板类中使用虚函数5.2 模板成员函数不可以使用虚函数6. 模板类型转换 1. 关于模板 1.1 基本概念 模板其实是C++泛型编程思想的一种体现。简...

2018-09-29 15:11:49 313

原创 C++ 回调函数

参考链接:https://www.jb51.net/article/116321.htm回调函数是通过函数指针调用的函数:把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,就称为回调函数。一般来说,回调函数都会放在一个宿主函数里,如下图。回调函数是否被执行,要看宿主函数是否调用它。主程序不知道宿主函数什么时候调用回调函数,因为调用函数启动了线程,这样,主程...

2018-09-13 17:05:01 249

转载 C++ 函数指针

转载自:http://www.cnblogs.com/TenosDoIt/p/3164081.html1. 概念函数指针,顾名思义就是指向函数的指针。函数具有可赋值给指针的物理内存地址,一个函数的函数名就是一个指针,它指向函数的代码。一个函数的地址是该函数的进入点,也是调用函数的地址。函数的调用可以通过函数名,也可以通过指向函数的指针来调用。函数指针还允许将函数作为变元传递给其他函数。...

2018-09-13 16:39:09 170

原创 Visual Studio 项目打包过程

通过参考一些博客,总结出了VS2015项目打包过程。

2017-08-31 19:21:23 2003

原创 C#发送QQ邮件和GMAIL邮件

QQ邮件首先打开将QQ邮箱的POP3/SMTP服务开启(在设置>账户下方)。接着,点击生成授权码。 最后就是编程实现邮件发送。MailAddress from = new MailAddress("1157974473@qq.com"); //设置邮件发送人MailAddress to = new MailAddress("leahlynn109@gmail.com"); //设

2017-08-14 18:10:57 2841

原创 C#连接MySQL数据库

C#连接MySQL数据库 本文参考http://www.cnblogs.com/wmxl/p/6072961.htmlC#连接MySQL主要有两种方法可供选择:一是ODBC的连接方式,需要用到Connector/ODBC;二是MySQL自己提供的API即Connector/Net。想要了解这两个方式的区别,可以参考我翻译的这篇博文http://blog.csdn.net/y109y/artic

2017-08-09 20:11:25 390

翻译 Connector/ODBC与Connector/Net的区别

Connector/ODBC与Connector/Net的区别 本文翻译自http://www.mysqlab.net/knowledge/kb/detail/topic/odbc/id/5069开发应用程序时,Windows应用程序开发人员通常可以选择使用Connector / ODBC和Connector/NET。本文将尝试解释两个应用程序与其理想用例之间的一些差异。ODBC->Conne

2017-08-09 20:01:03 2971

转载 MySQL在Windows上的免安装版本配置(5.7.19)

MySQL在Windows上的免安装版本配置本文章基于 http://www.cnblogs.com/by330326/p/5608290.html,并进行部分修改。首先去官网www.mysql.com下载最新版本,我的是5.7.19zip版,就是免安装,可以直接解压到需要的地方。我选择解压到E盘,路径如下E:\Mysql\mysql-5.7.19-winx64。环境变量的配置:计算机->右键-

2017-08-09 19:39:31 376

操作系统概念第7版 中文版

1本书,能被人誉为经典,当然是1本好书。由 John Wiley 公司出版的 美国耶鲁大学计算机科学系主任 Silberschatz 教授等编写的《操作系统概念)) (第七版)就 是这样-本经典之作,自第一版问世以来,经历了 20余年的锤炼,已经成为操作系统教材 的一本"圣经"

2015-09-19

空空如也

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

TA关注的人

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