MakerCloud的博客

当新技术如压路机般向你碾压而来时,如果你不能成为压路机的一部分,那就只能做路基的一部分了。...

C/C++ 开发利器 CLion安装与配置

概述 CLion是Jetbrains公司旗下新推出的一款专为开发C/C++所设计的跨平台IDE,它是以IntelliJ为基础设计的,同时还包含了许多智能功能来提高开发人员的生产力,提高开发人员的工作效率。这个强大的IDE不仅可以帮助开发人员在Linux、OS X和Windows上来开发C/C++,...

2019-04-14 22:28:35

阅读数 28

评论数 0

#pragma once与 #ifndef比较

在C++的编程中为了避免同一个文件被include多次,一般有以下两种方式,在能够支持这两种方式的编译器上,这两种方式并没有太大的区别。 1. #ifndef #ifndef的方式兼容C语言,主要依赖于宏名字不能冲突,这不仅可以保证同一个文件不会被包含多次,也能保证内容完全相同的两个文件不会被不小...

2019-03-31 18:12:38

阅读数 16

评论数 0

C++ String去除头尾空格 实现trim()方法

虽然C++11的标准库中并没有提供trim()方法,但我们可以使用string的find_first_not_of,和find_last_not_of方法实现trim() #include <iostream> #include <string&g...

2019-03-31 17:51:24

阅读数 37

评论数 0

C++ find_first_not_of() 和 find_first_of() 和 find()

find_first_not_of()函数 查找当前string与指定的字符串中任意一个字符都不相符的字符,并返回该字符在字符串中第一次出现的位置。 size_t find_first_not_of ( const string& str, size_t pos = 0 ) con...

2019-03-31 15:26:18

阅读数 21

评论数 0

C++ this指针

意义 系统在创建对象时,默认生成的指向当前对象的指针,这样做的目的,就是为了带来方便。 作用 1.避免构造器的入参和成员名相同。 2.基于this指针的自身引用还被广泛的应用于那些支持多重串联调用的函数中,比如连续赋值。 3.每个类成员函数的参数列表中,会由编译器自动传入this参数(this指针...

2019-03-31 11:32:31

阅读数 14

评论数 0

自定义ViewGroup不可或缺的ViewDragHelper工具类

ViewDragHelper概述 ViewDragHelper实质上是对父ViewGroup中的子view的滑动操作、重新定位视图以及状态跟踪等做了一系列的封装,即只需输入父ViewGroup的TouchEvent,则会通过Callback返回子View的相关操作。省去了程序员需要对ViewGro...

2019-02-21 23:28:09

阅读数 44

评论数 0

Android事件分发机制深度分析(四)

View事件分发机制的源码解析 ViewGroup不论是拦截事件或者将事件分发给子View,其最终都是调用了View的dispatchTouchEvent方法,毕竟ViewGroup也是继承自View。所以下面分析View#dispatchTouchEvent源码来了解View事件分发机制。 ...

2019-02-21 00:33:56

阅读数 44

评论数 0

Android事件分发机制深度分析(三)

ViewGroup事件分发的源码解析 虽然ViewGroup是继承自View,但ViewGroup和View的事件分发的处理还是不一样的,所以这里分开来讲。 当点击事件到达ViewGroup时,会调用ViewGroup的dispatchTouchEvent方法。而dispatchTouchEven...

2019-02-21 00:26:15

阅读数 49

评论数 0

Android事件分发机制深度分析(二)

从Activity到根ViewGroup事件分发的源码解析 上篇有提到点击事件经过层层传递来到了当前Activity,当事件到达当前Activity时,会调用Activity#dispatchTouchEvent方法: public boolean dispatchTouchEvent(M...

2019-02-21 00:15:13

阅读数 45

评论数 0

Android事件分发机制深度分析(一)

概述 对Android的事件分发已经研究一段时间了,主要涉及Activity->ViewGroup->View 之间的事件传递与拦截,主要源代码在android\view\ViewGroup.java、android\vi...

2019-02-21 00:09:25

阅读数 79

评论数 0

Android studio 3.2.0 使用Android Device Monitor 调试View

概述 需要分析一个APP的UI组成,准备用DDMS中的Hierarchy View工具来完成,结果Android Studio 3.2 中竟然没找打DDMS的打开入口,Google后发现下面的说明: 1.来自Google官方文档的一段话: https://developer.android.com...

2019-02-15 11:15:50

阅读数 1108

评论数 0

排序算法之七 堆排序(Heap Sort)

概述 堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。 算法描述 将待排序的元素序列(R1,R2….Rn)构建成最大堆,此堆为初始的无序区。(关于最大堆的详细构建过程请...

2019-01-12 16:19:53

阅读数 26

评论数 0

排序算法之六 快速排序(Quick Sort)

概述 快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。在平均状况下,排序n个元素要O(nlogn)次比较。在最坏状况下则需要O(n^2)次比较,但这种状况并不常见。事实上,快速排序通常...

2019-01-12 16:12:29

阅读数 40

评论数 0

排序算法之四 希尔排序(Shell Sort)

概述 希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法是冲破O(n2)的第一批算法之一。它与插入排序的不同之处在于,它会优先比较距离较远的元素。希尔排序又叫缩小增量排序...

2019-01-12 16:04:52

阅读数 64

评论数 0

排序算法之三 插入排序(Insertion Sort)

概述 插入排序是一种简单直观的排序算法。它的工作原理非常类似于我们抓扑克牌,对于未排序数据(右手抓到的牌),在已排序序列(左手已经排好的牌)中从后向前扫描,找到相应位置并插入,同时需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。 算法描述 1.从第一个元素开始,即用该元素初始化已排序序...

2019-01-12 15:59:02

阅读数 60

评论数 1

排序算法之五 归并排序(Merge Sort)

概述 归并排序是创建在归并操作上的一种有效的排序算法,效率为O(nlogn),1945年由冯·诺伊曼首次提出。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。归并排序是一种稳定的排序方法。通过将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列...

2019-01-10 01:42:41

阅读数 36

评论数 0

排序算法之二 选择排序(Selection Sort)

概述 选择排序是一种简单直观的排序算法。是表现最稳定的排序算法之一,无论什么数据进去都是O(n^2)的时间复杂度,所以用到它的时候,数据规模越小越好。 选择排序与冒泡排序的区别:冒泡排序通过依次交换相邻两个顺序不合法的元素位置,从而将当前最小(大)元素放到合适的位置;而选择排序每遍历一次都记住了当...

2019-01-09 22:01:24

阅读数 48

评论数 0

排序算法之一 冒泡排序(Bubble Sort)

概述 冒泡排序是一种极其简单的排序算法,它重复地走访过要排序的元素,依次比较相邻两个元素,如果它们的顺序错误就把他们调换过来,直到没有元素再需要交换,排序完成。这个算法的名字由来是因为越小(或越大)的元素会经由交换慢慢“浮”到数列的顶端。尽管冒泡排序是最容易了解和实现的排序算法之一,但它对于少数元...

2019-01-09 21:46:18

阅读数 81

评论数 0

数据结构 堆树(最大堆、最小堆)

一、堆树的定义 (1)堆树是一颗完全二叉树; (2)堆树中某个节点的值总是不大于或不小于其孩子节点的值; (3)堆树中每个节点的子树都是堆树。 当父节点的键值总是大于或等于任何一个子节点的键值时为最大堆,也称大根堆。 当父节点的键值总是小于或等于任何一个子节点的键值时为最小堆,也称小根堆。 如下图...

2019-01-09 15:36:10

阅读数 76

评论数 0

数据结构 二叉树

概述 二叉树是树的特殊一种,具有如下特点: 每个结点最多有两颗子树,结点的度最大为2。 左子树和右子树是有顺序的,次序不能颠倒。 即使某结点只有一个子树,也要区分左右子树。 二叉树的一些术语如下: 节点的度:一个节点含有的子树的个数称为该节点的度; 叶节点或终端节点:度为零的节点; 非终端节...

2019-01-08 15:12:32

阅读数 53

评论数 0

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