
C++
文章平均质量分 85
九霄星河
这个作者很懒,什么都没留下…
展开
-
C++中cout的使用
C++中cout的使用1. cout使用的三种方式2. cout和i/i++/++i的组合使用3. 以不同进制输出数字4. 输出数字位数的控制5. 强制显示小数点和正负号6. 设置宽度和对齐方式7. 设置填充字符8. iomanip库用法总结cout 是C++中 ostream 类型的对象,该类被封装在 < iostream > 库中,该库定义的名字都在命名空间 std 中,所以 c...原创 2018-09-21 08:59:46 · 225746 阅读 · 15 评论 -
数据结构实现 5.2:映射_基于链表实现(C++版)
数据结构实现 5.2:映射_基于链表实现(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 增加操作2.2 删除操作2.3 修改操作2.4 查找操作2.5 其他操作3. 算法复杂度分析3.1 增加操作3.2 删除操作3.3 修改操作3.4 查找操作4. 完整代码1. 概念及基本框架.在 5.1 中我们通过 二分搜索树 来实现了映射,这一节我们通过 链表 来实现映射。映射 的基本...原创 2018-11-13 15:10:07 · 669 阅读 · 0 评论 -
数据结构实现 1.1:动态数组(C++版)
数据结构实现(一):动态数组(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 增加操作2.2 删除操作2.3 修改操作2.4 查找操作2.5 其他操作3. 算法复杂度分析3.1 增加操作3.2 删除操作3.3 修改操作3.4 查找操作4. 完整代码1. 概念及基本框架数组 是一种 线性结构 ,而且存储上属于 顺序存储(即内存的物理空间是连续的),也就是线性表中的 顺序表 。数组结构...原创 2018-11-08 16:33:29 · 2290 阅读 · 3 评论 -
数据结构实现 6.1:二叉堆_基于动态数组实现(C++版)
数据结构实现 6.1:二叉堆_基于动态数组实现(C++版)1. 概念及基本框架1.1 满二叉树1.2 完全二叉树2. 基本操作程序实现2.1 增加操作2.2 删除操作2.3 查找操作2.4 其他操作3. 算法复杂度分析3.1 增加操作3.2 删除操作3.3 查找操作4. 完整代码1. 概念及基本框架二叉堆 是一种高级数据结构,这里我们通过 1.1 中的 动态数组 来实现。因为二分搜索树操作的...原创 2018-11-14 18:27:47 · 657 阅读 · 2 评论 -
数据结构实现 6.2:优先队列_基于最大二叉堆实现(C++版)
数据结构实现 6.2:优先队列_基于最大二叉堆实现(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 入队操作2.2 出队操作2.3 查找操作2.4 其他操作3. 算法复杂度分析3.1 入队操作3.2 出队操作3.3 查找操作4. 完整代码1. 概念及基本框架队列 是一种现实中很常见的数据结构,但有时候队列排序不仅仅依靠入队时间来决定,而是不同的元素有不同的优先级。显然,通过 6.1...原创 2018-11-14 19:37:10 · 538 阅读 · 2 评论 -
数据结构实现 6.3:优先队列_基于动态数组实现(C++版)
数据结构实现 6.3:优先队列_基于动态数组实现(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 入队操作2.2 出队操作2.3 查找操作2.4 其他操作3. 算法复杂度分析3.1 入队操作3.2 出队操作3.3 查找操作4. 完整代码1. 概念及基本框架6.2 中通过 最大二叉堆 实现了 优先队列 ,这一节我们通过动态数组来实现优先队列。优先队列 是 队列 的一种,所以有队列...原创 2018-11-24 15:45:31 · 621 阅读 · 0 评论 -
数据结构实现 6.4:优先队列_基于链表实现(C++版)
数据结构实现 6.4:优先队列_基于链表实现(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 入队操作2.2 出队操作2.3 查找操作2.4 其他操作3. 算法复杂度分析3.1 入队操作3.2 出队操作3.3 查找操作4. 完整代码1. 概念及基本框架6.3 中通过 动态数组 实现了 优先队列 ,这一节我们通过链表来实现优先队列。优先队列 是 队列 的一种,所以有队列的基本特性...原创 2018-11-24 15:58:57 · 1399 阅读 · 0 评论 -
数据结构实现 8.1:字典树(C++版)
数据结构实现 8.1:字典树(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 增加操作2.2 查找操作2.3 其他操作3. 算法复杂度分析3.1 增加操作3.2 查找操作4. 完整代码1. 概念及基本框架线段树 是一种二分搜索树,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。如上图中,每个结点可以存一些这个区间内的元素的性质,比如:和、最大值、最小值……...原创 2018-11-25 22:27:46 · 674 阅读 · 0 评论 -
数据结构实现 7.1:线段树(C++版)
数据结构实现 7.1:线段树(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 构建操作2.2 查找操作2.3 其他操作3. 算法复杂度分析3.1 构建操作3.2 查找操作4. 完整代码1. 概念及基本框架线段树 是一种二分搜索树,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。如上图中,每个结点可以存一些这个区间内的元素的性质,比如:和、最大值、最小值……...原创 2018-11-24 21:26:42 · 1711 阅读 · 0 评论 -
数据结构实现 9.1:并查集_数组结构实现(C++版)
数据结构实现 9.1:并查集(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 增加操作2.2 查找操作2.3 其他操作3. 算法复杂度分析3.1 增加操作3.2 查找操作4. 完整代码1. 概念及基本框架线段树 是一种二分搜索树,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。如上图中,每个结点可以存一些这个区间内的元素的性质,比如:和、最大值、最小值……...原创 2018-11-26 10:40:58 · 701 阅读 · 0 评论 -
数据结构实现 9.2:并查集_树思想实现(C++版)
数据结构实现 9.2:并查集_树思想实现(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 联合操作2.2 查找操作2.3 其他操作3. 算法复杂度分析3.1 联合操作3.2 查找操作4. 完整代码1. 概念及基本框架9.1 我们利用数组的结构实现了并查集,这一节我们利用树的思想来实现并查集。(但本质上还是数组,只是逻辑上的树形结构)如上图,不同的颜色表示不同的集合,里面的字母表...原创 2018-11-26 11:16:02 · 518 阅读 · 0 评论 -
数据结构实现 10.1:AVL树(C++版)
数据结构实现 10.1:自平衡树(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 增加操作2.2 查找操作2.3 其他操作3. 算法复杂度分析3.1 增加操作3.2 查找操作4. 完整代码1. 概念及基本框架线段树 是一种二分搜索树,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。如上图中,每个结点可以存一些这个区间内的元素的性质,比如:和、最大值、最小值...原创 2018-11-26 15:48:40 · 326 阅读 · 0 评论 -
数据结构实现 10.2:映射_基于AVL树实现(C++版)
数据结构实现 10.2:映射_基于AVL树实现(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 增加操作2.2 删除操作2.3 修改操作2.4 查找操作2.5 其他操作3. 算法复杂度分析3.1 增加操作3.2 删除操作3.3 修改操作3.4 查找操作4. 完整代码1. 概念及基本框架映射 是一种高级数据结构,其实现方法也不唯一,但存储上使用 链式存储(即内存的物理空间是不连续的)...原创 2018-11-26 19:14:09 · 694 阅读 · 1 评论 -
字符串匹配原理及实现(C++版)
字符串匹配原理及实现(C++版)1. 字符串匹配概念2. BF3. KMP4. BM5. 性能总结1. 字符串匹配概念2. BF3. KMP4. BM5. 性能总结原创 2018-12-05 16:09:01 · 13875 阅读 · 3 评论 -
排序算法 1:冒泡排序(C++版)
排序算法 1:冒泡排序(C++版)1. 冒泡排序1.1 算法描述1.2 动图演示1.3 代码实现2. 改进冒泡排序2.1 改进思想2.2 代码实现3. 鸡尾酒排序3.1 改进思想3.2 代码实现1. 冒泡排序冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就...原创 2018-12-11 21:12:11 · 376 阅读 · 0 评论 -
数据结构实现 5.1:映射_基于二分搜索树实现(C++版)
数据结构实现 5.1:映射_基于树实现(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 增加操作2.2 删除操作2.3 修改操作2.4 查找操作2.5 其他操作3. 算法复杂度分析3.1 增加操作3.2 删除操作3.3 修改操作3.4 查找操作4. 完整代码1. 概念及基本框架映射 是一种高级数据结构,其实现方法也不唯一,但存储上使用 链式存储(即内存的物理空间是不连续的)。这一节...原创 2018-11-13 13:28:25 · 578 阅读 · 0 评论 -
数据结构实现 4.2:集合_基于链表实现(C++版)
数据结构实现 4.2:集合_基于链表实现(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 增加操作2.2 删除操作2.3 查找操作2.4 其他操作3. 算法复杂度分析3.1 增加操作3.2 删除操作3.3 查找操作4. 完整代码1. 概念及基本框架在4.1 中我们通过 二分搜索树 实现了集合,这一节我们通过 链表 来实现集合。集合 的基本特性依然要满足:集合内的元素 不能重复 ...原创 2018-11-13 11:01:18 · 1011 阅读 · 2 评论 -
数据结构实现 4.1:集合_基于二分搜索树实现(C++版)
数据结构实现 4.1:集合_基于树实现(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 增加操作2.2 删除操作2.3 查找操作2.4 其他操作3. 算法复杂度分析3.1 增加操作3.2 删除操作3.3 查找操作4. 完整代码1. 概念及基本框架集合 是一种高级数据结构,其实现方法也不唯一,但存储上使用 链式存储(即内存的物理空间是不连续的)。这一节我们通过 二分搜索树 来实现集合...原创 2018-11-13 10:12:28 · 537 阅读 · 0 评论 -
[LeetCode] 279. Perfect Squares 完全平方数
[LeetCode] 279. Perfect Squares 完全平方数问题描述:给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。示例 1:输入: n = 12输出: 3 解释: 12 = 4 + 4 + 4.示例 2:输入: n = 13输出: 2解释: 13 = 4 + 9.1. 数...原创 2018-09-23 10:15:43 · 3238 阅读 · 0 评论 -
C/C++避免头文件重复包含的方法
C/C++避免头文件重复包含的方法1. #ifndef2. #pragma once3. 混合使用在实际的编程过程中,因为会使用多个文件,所以在文件中不可避免的要引入一些头文件,这样就可能会出现一个头文件被 include 多次,在C/C++中有几种不同的方式可以解决这个问题,总体功能相差不大,但依然存在细微差别。1. #ifndef格式如下:#ifndef __COMPLEX__#de...原创 2018-11-01 14:09:54 · 8727 阅读 · 0 评论 -
数据结构实现 1.2:数组栈(C++版)
数据结构实现(二):数组栈(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 入栈操作2.2 出栈操作2.3 查找操作2.4 其他操作3. 算法复杂度分析3.1 入栈操作3.2 出栈操作3.3 查找操作4. 完整代码1. 概念及基本框架栈 可以看做一种特殊的 数组 ,所以我使用第一节实现的 动态数组 来实现栈这种数据结构。当然,栈也可以通过其他方式来实现。因为该栈是通过动态数组实现的...原创 2018-11-09 11:05:35 · 828 阅读 · 0 评论 -
数据结构实现 1.3:数组队列(C++版)
数据结构实现(三):数组队列(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 入队操作2.2 出队操作2.3 查找操作2.4 其他操作3. 算法复杂度分析3.1 入队操作3.2 出队操作3.3 查找操作4. 完整代码1. 概念及基本框架队列 可以看做一种特殊的 数组 ,所以我使用第一节实现的 动态数组 来实现队列这种数据结构。当然,队列也可以通过其他方式来实现。因为该队列是通过动态...原创 2018-11-09 13:34:56 · 1707 阅读 · 0 评论 -
C++中的深拷贝与浅拷贝
C++中的深拷贝与浅拷贝1. 概念2. 实际应用2.1 构造函数2.2 拷贝构造函数2.3 拷贝赋值函数2.4 析构函数1. 概念在C++涉及指针的部分中,有 深拷贝和 浅拷贝 两个概念,让我们通过例子来理解一下。C++中,字符串是通过首地址来表示的,如图所示:图中,字符串用 s1 表示,而 s1 是字符串 “HELLO” 的首地址(字符串以 ‘\0’ 作为结束标志),通过寻址,即可实现字...原创 2018-11-06 21:24:18 · 375 阅读 · 0 评论 -
数据结构实现 1.4:循环队列(C++版)
数据结构实现(四):循环队列(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 入队操作2.2 出队操作2.3 查找操作2.4 其他操作3. 算法复杂度分析3.1 入队操作3.2 出队操作3.3 查找操作4. 完整代码1. 概念及基本框架通过第三节我们知道,数组队列 在出队操作中需要花费 O(n) 的时间复杂度,原因在于出队时需要移动大量元素。如果我们可以循环利用空间,那么问题就迎刃...原创 2018-11-09 16:46:09 · 462 阅读 · 1 评论 -
C++中关键字const的用法
C++中关键字const的用法1. 定义常量2. 函数内const是C++的一个关键字,现在对它的用法做一个小结。1. 定义常量在C中,如果要频繁的使用某一个常量,可以利用宏定义来利用一个符号定义这个常量,以后用到这个常量的地方就用这个符号代替即可,这样修改这个常量的值也方便了很多。在C++中,我们可以利用const替代宏定义,具体代码如下:#define M 15const int N...原创 2018-11-02 21:10:48 · 1057 阅读 · 1 评论 -
C++类的构造函数和析构函数
C++面向对象编程小贴士(一)1. 头文件(Header)中的防卫式声明2. 构造函数(constructor)C++编程中有一些规范要注意。1. 头文件(Header)中的防卫式声明在头文件complex.h中,为了避免已经存在该名字的头文件,可以进行防卫式的声明,形式如下:#ifndef __COMPLEX__#define __COMPLEX__...#endif2. 构造...原创 2018-11-02 21:50:34 · 1093 阅读 · 0 评论 -
数据结构实现 3.1:二分搜索树(C++版)
数据结构实现 3.1:二分搜索树(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 增加操作2.2 删除操作2.3 查找操作2.4 遍历操作2.5 其他操作3. 算法复杂度分析3.1 增加操作3.2 删除操作3.3 查找操作4. 完整代码1. 概念及基本框架二分搜索树 是一种 半线性结构 ,而且存储上属于 链式存储(即内存的物理空间是不连续的),是树形结构的一种。二分搜索树结构如下图...原创 2018-11-12 23:14:51 · 793 阅读 · 0 评论 -
数据结构实现 2.1:链表(C++版)
数据结构实现(五):链表(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 增加操作2.2 删除操作2.3 修改操作2.4 查找操作2.5 其他操作3. 算法复杂度分析3.1 增加操作3.2 删除操作3.3 修改操作3.4 查找操作4. 完整代码1. 概念及基本框架链表 是一种 线性结构 ,而且存储上属于 链式存储(即内存的物理空间是不连续的),是线性表的一种。链表结构如下图所示:...原创 2018-11-10 11:01:31 · 459 阅读 · 0 评论 -
数据结构实现 2.2:链表栈(C++版)
数据结构实现(六):链表栈(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 入栈操作2.2 出栈操作2.3 查找操作2.4 其他操作3. 算法复杂度分析3.1 入栈操作3.2 出栈操作3.3 查找操作4. 完整代码1. 概念及基本框架通过第五节,我们知道链表虽然整体的操作时间复杂度是 O(n) 级别的,但是如果只对头结点进行操作,那么时间复杂度是 O(1) 级别的,这很类似于栈(单...原创 2018-11-10 13:58:27 · 730 阅读 · 0 评论 -
C++中不同类型对象的存放位置
C++中不同类型对象的存放位置1. 存储区域2. 不同类型对象的存储2.1 全局对象2.2 局部对象2.3 静态局部对象2.4 动态对象在C++中,定义的对象被放在不同的区域中,以下就各个区域以及不同类型对象的存储情况作简要介绍。1. 存储区域栈(Stack)是存在于作用域(scope)的一块内存空间。例如当你调用函数时,函数本身就会形成一个栈用来放置它所接收的参数,以及返回地址。堆(H...原创 2018-11-07 17:30:49 · 6189 阅读 · 1 评论 -
数据结构实现 2.3:链表队列(C++版)
数据结构实现(七):链表队列(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 入队操作2.2 出队操作2.3 查找操作2.4 其他操作3. 算法复杂度分析3.1 入队操作3.2 出队操作3.3 查找操作4. 完整代码1. 概念及基本框架在前面第三节中,我们通过 动态数组 实现了 队列 这种数据结构。当然,队列也可以通过 链表 来实现所谓的 链表队列 。链表队列的结构如上图所示,...原创 2018-11-10 20:52:05 · 262 阅读 · 0 评论 -
九大编程语言
九大编程语言1. Java2. C3. Python4. C++5. C#6. Ruby7. Objective-C8. PHP9. JavaScript10. 总结如今 Python、Java、C、C ++、JavaScript 等编程语言五花八门,而各种编程语言也各有优劣,那么,我们该如何去选择?其实,不同的语言适合于不同的领域 ,以下就九大编程语言的简介、用途、发展趋势等做简单介绍,供...原创 2018-11-05 11:30:56 · 5105 阅读 · 5 评论 -
排序算法 2:选择排序(C++版)
排序算法 2:选择排序(C++版)1. 算法描述2. 动图演示3. 代码实现选择排序(Selection Sort)是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。1. 算法描述n个记录的直接选择排序可经过n-1趟直接选择排序得...原创 2018-12-11 21:14:15 · 2147 阅读 · 0 评论