自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(100)
  • 收藏
  • 关注

原创 C++ 11 复习要点

C++11

2017-08-31 19:45:28 587

原创 【剑指offer】剑指offer 练习笔记

剑指offer练习1. 赋值运算符class CMyString{char* m_pData; int size; }写一个CMyString类的赋值运算符。CMyString& operator = (const CMyString& s){if( this == &s) return * this; if(m_pData) delete[]

2017-08-30 16:41:25 458

转载 常用算法:分治算法、动态规划算法、贪心算法、回溯法、分支限界法

常用算法:分治算法、动态规划算法、贪心算法、回溯法、分支限界法分治算法一、基本概念   在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变

2017-08-30 12:13:58 550

原创 【C++复习】易错的小问题

1. 数组初始化数组初始化有很多坑,比如int a [10]; 这样的话,10个元素的值都是没有初始化的,在32位Windows上是-858993460,16进制表示是0xcccccccc,栈中变量如果没有初始化,值就是这个。如果要初始化数组,可以用int a[10] = {}; 或者int a[10] = {0};两种都是把值初始化为0。需要注意的是,这种方法只能把值

2017-08-30 09:36:39 1460 1

原创 【算法】动态规划

最近看了一下动态规划,发现其实还是很容易的,不知道为什么当时上课的时候觉得很难。

2017-08-30 06:39:22 531

转载 二叉树的各种操作(面试必备)

https://www.61mon.com/index.php/archives/191/本篇针对面试中常见的二叉树操作作个总结:(1):前序遍历,中序遍历,后序遍历;(2):层次遍历;(3):求树的节点数;(4):求树的叶子数;(5):求树的深度;(6):求二叉树第 k 层的节点个数;(7):判断两棵二叉树是否结构相同;(8):求二叉树的镜像;(9):

2017-08-29 17:14:43 535

转载 轻松搞定面试中的二叉树题目

版权所有,转载请注明出处,谢谢!http://blog.csdn.net/walkinginthewind/article/details/7518888树是一种比较重要的数据结构,尤其是二叉树。二叉树是一种特殊的树,在二叉树中每个节点最多有两个子节点,一般称为左子节点和右子节点(或左孩子和右孩子),并且二叉树的子树有左右之分,其次序不能任意颠倒。二叉树是递归定义的,因此,与二叉树有关

2017-08-29 14:41:41 456

原创 二叉树的各种计算题和性质

1. 普通二叉树比如表达式树2. 二叉查找树 BST (满足左子树所有节点小于根小于右子树所有节点的二叉树)    涉及到了BST的插入、删除、查找问题。插入(建树)和查找(前序、中序、后序遍历)比较简单。删除操作需要考虑三个问题:(1) 被删节点是叶子节点。此时将父节点中的相应指针置空就可以(2) 被删的节点只有一个子女。此时将父节点中的相应指针设置为自己的子节点(3) 被删

2017-08-29 13:41:57 945

原创 【STL】栈适配器stack

STL中的栈stack是一个适配器,它的实现容器可以是deque, vector, 或者list, 默认是deque,只要支持push_back()和pop_back()的容器就可以。构造函数 stack> ;stack> sk; stack> sk;   stack sk;  stack> sk; STL 中stack的基本操作很少:empty() 判空top()

2017-08-29 13:41:09 311

原创 轻松搞定面试中的链表题目

版权所有,转载请注明出处,谢谢!http://blog.csdn.net/walkinginthewind/article/details/7393134链表是最基本的数据结构,面试官也常常用链表来考察面试者的基本能力,而且链表相关的操作相对而言比较简单,也适合考察写代码的能力。链表的操作也离不开指针,指针又很容易导致出错。综合多方面的原因,链表题目在面试中占据着很重要的地位。本文对链

2017-08-29 13:06:58 345

原创 排序算法

1. 直接选择排序任何情况下的时间复杂度都是 O(n^2), 最差的一种排序,每次都必须遍历玩整个子数组,选出最小的那个,空间复杂度为O(1),无需额外空间。直接选择排序的关键在于,每次从右侧子数组中,选出最小的,放到子数组第一个,然后缩小子数组范围,再次选择、交换。#include using namespace std;void selectionSort(int* a, int

2017-08-29 06:30:57 387

原创 链表

1. 带头结点的列表相比没有头结点的标准实现,好处在于?这种伪首节点叫头结点。简化了删除和插入操作,原先的标准实现必须考虑头结点的特殊性(没有前驱),在链表开头插入和删除头结点都要独立考虑,在代码中需要判断节点是不是头结点,增加了复杂度。而增加了头结点的链表,真正的头结点插入和删除和其余节点无区别,代码是一套。2. 带头结点的链表判空条件是head->next == null; 3

2017-08-28 23:16:00 325

原创 【STL】queue队列适配器

queue和stack一样,也是STL中的适配器。任何支持push_back(), pop_front()的容器都可以支持,即deque双端队列, list双向链表。默认是deque.基本操作:push 入队pop 出队sizeemptyfront 获得队首元素值back 获得对尾元素值

2017-08-28 23:00:57 389

转载 【STL】C++11新特性emplace操作

emplace操作是C++11新特性,新引入的的三个成员emlace_front、empace 和 emplace_back,这些操作构造而不是拷贝元素到容器中,这些操作分别对应push_front、insert 和push_back,允许我们将元素放在容器头部、一个指定的位置和容器尾部。两者的区别 当调用insert时,我们将元素类型的对象传递给insert,元素的对象被拷贝到容

2017-08-28 22:59:05 4937

原创 【STL】迭代器iterator和有关问题

迭代器的基本操作(即每种容器的迭代器都有的操作): 自增++ 自减-- 去引用*

2017-08-28 22:39:15 299

转载 【STL】反向迭代器

C++ primer (中文版第四版)第273页9.3.2 begin和end成员        begin和end操作产生指向容器内第一个元素和最后一个元素的下一个位置的迭代器,如下所示。这两个迭代器通常用于标记包含容器中所有元素的迭代范围。c.begin() 返回一个迭代器,它指向容器c的第一个元素c.end() 返回一个迭代器,它指向容器c的最后一个元素的下一个位置c.r

2017-08-28 22:20:05 322

转载 排序算法的稳定性

这几天笔试了好几次了,连续碰到一个关于常见排序算法稳定性判别的问题,往往还是多选,对于我以及和我一样拿不准的同学可不是一个能轻易下结论的题目,当然如果你笔试之前已经记住了数据结构书上哪些是稳定的,哪些不是稳定的,做起来应该可以轻松搞定。本文是针对老是记不住这个或者想真正明白到底为什么是稳定或者不稳定的人准备的。      首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前2个相

2017-08-28 09:48:59 310

原创 hash table 哈希表(散列表)

hash table ,也叫散列表。涉及到哈希函数、哈希冲突处理的问题。哈希函数是哈希表的关键,是用来从值到哈希表索引(存放位置)的映射。比如:要存放一个学校学生的姓名,他们是Amanda, Jack, Andy, Tom, Bob, Black等等500个人。我们可以设计一个哈希表,容量为500,来存放这些学生的信息。哈希表的目的是快速访问,利用数组的随机访问性,快速的通过下表访问元素。需要

2017-08-28 06:15:22 633 1

原创 【练习】数据结构和算法复习题

复习数据结构,写一些简单的题目复习一下。1. 找出一个字符串中的括号匹配数。stack#include #include using namespace std; int countMatch(string s) { if(s.size() == 0) return 0; stack count; int n = 0 ; // 记录匹配次数

2017-08-27 20:54:25 4045

转载 【STL】智能指针auto_ptr

C++中指针申请和释放内存通常采用的方式是new和delete。然而标准C++中还有一个强大的模版类就是auto_ptr,它可以在你不用的时候自动帮你释放内存。下面简单说一下用法。[cpp] view plain copy用法一:  std::auto_ptrm_example(new MyClass());    用法二:  std::auto_ptrm_exampl

2017-08-27 15:00:38 280

原创 【STL】容器 > 关联式容器 > set(集合)

一、内部实现C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作。vector封装数组,list封装了链表,map和set封装了二叉树等,在封装这些数据结构的时候,STL按照程序员的使用习惯,以成员函数方式提供的常用操作,如:插入、排序、删除、查找等。让用

2017-08-27 10:26:53 295

原创 红黑树

1.stl中的set底层用的什么数据结构? 2.红黑树的数据结构怎么定义的? 3.红黑树有哪些性质? 4.红黑树的各种操作的时间复杂度是多少? 5.红黑树相比于BST和AVL树有什么优点? 6.红黑树相对于哈希表,在选择使用的时候有什么依据? 7.如何扩展红黑树来获得比某个结点小的元素有多少个? 8.扩展数据结构有什么步骤?stl中的set底层用的什么数据结构? 红黑树红黑树的

2017-08-27 09:05:18 244

原创 【STL】容器 > 关联式容器 > map

map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。一、内部实现map的底层是一棵红黑树,在对节点的插入或是删除操作中,通过旋转来保持平衡性,最坏情况下的插入、删除、查找时间是O(logn),效率非常之高。1.1 红黑树1.1.1 特点参考:http://blog.

2017-08-27 06:24:45 253

转载 【STL】STL之顺序容器和关联容器总结

顺序容器         Vector中所采用的数据结构非常简单:线性连续空间。当分配空间被占满而仍然需要添加元素时,vector便会进行一场空间重新配置的大工程!在这里,程序员需要注意的是,一旦引起空间重新配置,之前指向原vector的所有迭代器就都失效了,这一点在工程中容易引起bug。         List则对空间的运用有绝对的精准,一点也不浪费。注意,list内部构成的实际是一个

2017-08-26 14:59:55 2568 2

原创 【STL】容器 > 顺序容器 > list(双向链表)

STL中的list就是一双向链表,可高效地进行插入删除元素。STL提供的list是一个双向链表容器,对应的迭代器类型为Bidirectional Iterators. 对于双向链表我们可以方便的在任意位置进行插入和删除操作,list每个节点的内存位置之间没有必然联系。List 是C++标准程式库中的一个类,可以简单视之为双向连结串行,以线性列的方式管理物件集合。list 的特色是在集合的任何位置增

2017-08-26 13:24:39 524

原创 【STL】容器 > 顺序容器 > deque(双端队列)

deque和vector类似,支持快速随机访问。二者最大的区别在于,vector只能在末端插入数据,而deque支持双端插入数据。deque的内存空间分布是小片的连续,小片间用链表相连,实际上内部有一个map的指针。deque空间的重新分配要比vector快,重新分配空间后,原有的元素是不需要拷贝的。一、内部实现deque是双端队列可在头和尾部插入、删除元素。deque动态地以分段

2017-08-26 13:13:36 472

原创 STL 复习要点

1.说说std::vector的底层(存储)机制。vector就是一个动态数组,里面有一个指针指向一片连续的内存空间,当空间不够装下数据时,会自动申请另一片更大的空间(一般是增加当前容量的50%或100%),然后把原来的数据拷贝过去,接着释放原来的那片空间;当释放或者删除里面的数据时,其存储空间不释放,仅仅是清空了里面的数据。2.std::vector的自增长机制。当已经分配的空间

2017-08-26 11:32:15 1958

原创 【STL】容器 > 顺序容器 > vector

vector 是一种动态数组一、内部实现1.1 底层存储机制vector是一块连续内存,当空间不足了会再分配。 vector就是一个动态数组,里面有一个指针指向一片连续的内存空间,当空间不够装下数据时,会自动申请另一片更大的空间(一般是增加当前容量的50%或100%),然后把原来的数据拷贝过去,接着释放原来的那片空间;当释放或者删除里面的数据时,其存储空间不释放,仅仅是清空了里面的数据

2017-08-26 11:18:15 299

转载 【STL】STL 一般总结

在C++标准中,STL被组织为下面的17个头文件:algorithm>、deque>、functional>、iterator>、array>、vector>、list>、、、、、numeric>、queue>、set>、、stack>utility>。

2017-08-26 10:09:45 206

转载 【STL】容器 > 顺序容器 > string 容器

string 是最常用的STL容器。内部实现C++程序员编码过程中经常会使用string(wstring)类,你是否思考过它的内部实现细节。比如这个类的迭代器是如何实现的?对象占多少字节的内存空间?内部有没有虚函数?内存是如何分配的?构造和析构的成本有多大?笔者综合这两天阅读的源代码及个人理解简要介绍之,错误的地方望读者指出。首先看看string和wstring类的定义:

2017-08-26 08:15:36 386

转载 虚拟内存和物理内存

http://blog.chinaunix.net/uid-26983585-id-3364091.html前一段时间在面试总监的时候,总监问了我这样的一个问题:你个我说说物理内存和虚拟内存到底是怎么一回事?其实之前我看过这个问题,据我理解的,当时是这么回答的“进程在运行的时候,操作系统都为其分配一个4GB的地址空间,即所谓的虚拟地址空间,一般情况下,当我们的程序很大的时候,实际的物理

2017-08-25 13:37:35 355

原创 MonoBehaviour

MonoBehaviour 是

2017-08-25 09:18:35 195

转载 Unity3D 协程与线程

1 线程、进程、协程的区别进程拥有自己独立的堆和栈,既不共享堆,亦不共享栈,进程由操作系统调度。线程拥有自己独立的栈和共享的堆,共享堆,不共享栈,线程亦由操作系统调度(标准线程是的)。协程和线程一样共享堆,不共享栈,协程由程序员在协程的代码里显示调度。协程不是线程,不是异步执行的。2. 什么是协程协同程序绝对不是一个线程。这意味着在同一时间只有一个协同程序在

2017-08-25 06:52:32 810

原创 C# 面试题

参考:http://blog.csdn.net/tonnychu/article/details/508884521. 请简述值类型与引用类型的区别2.C# 中所有引用类型的基类是什么3. 请简述 ArrayList 和 List 的主要区别4. 请简述 GC (垃圾回收)产生的原因,并描述如何避免?5. 请描述 Interface 与抽象类之间的不同

2017-08-25 06:19:25 289

转载 Lua 面试题目

1、Lua的特性轻量级: 它用标准C语言编写并以源代码形式开放,编译后仅仅一百余K,可以很方便的嵌入别的程序里。可扩展: Lua提供了非常易于使用的扩展接口和机制:由宿主语言(通常是C或C++)提供这些功能,Lua可以使用它们,就像是本来就内置的功能一样。其它特性:支持面向过程(procedure-oriented)编程和函数式编程(functional pro

2017-08-25 06:10:28 9027

转载 lua面试题:热更新简介、原理及示例

1、什么是热更新?热更新也叫不停机更新,是在游戏服务器运行期间对游戏进行更新。实现不停机修正bug、修改游戏数据等操作。也可以这样讲:一辆车以时速150km跑着,突然爆胎了,然后司机告诉你,我不停车,你去把轮胎换了,小心点。恩2、热更新原理第一种:lua中的require会阻止多次加载相同的模块。所以当需要更新系统的时候,要卸载掉响应的模块。(把package.lo

2017-08-25 06:07:32 2311

转载 C++ 字节对齐(class 与struct)

大家都知道,C++空类的内存大小为1字节,为了保证其对象拥有彼此独立的内存地址。非空类的大小与类中非静态成员变量和虚函数表的多少有关。而值得注意的是,类中非静态成员变量的大小与编译器内存对齐的设置有关。成员变量在类中的内存存储并不一定是连续的。它是按照编译器的设置,按照内存块来存储的,这个内存块大小的取值,就是内存对齐。

2017-08-24 20:20:21 1229

转载 【C#学习】yield关键字

yield是C#为了简化遍历操作实现的语法糖,我们知道如果要要某个类型支持遍历就必须要实现系统接口IEnumerable,这个接口后续实现比较繁琐要写一大堆代码才能支持真正的遍历功能。举例说明using System;using System.Collections.Generic;using System.Collections;using System.Linq;u

2017-08-24 19:51:42 524

转载 【C#学习】匿名方法

C# 匿名方法通过关键字 delegate 实现。委托是用于引用与其具有相同标签的方法。换句话说,您可以使用委托对象调用可由委托引用的方法。匿名方法(Anonymous methods) 提供了一种传递代码块作为委托参数的技术。匿名方法是没有名称只有主体的方法。在匿名方法中您不需要指定返回类型,它是从方法主体内的 return 语句推断的。编写匿名方法的

2017-08-24 19:47:51 178

转载 【C#学习 - 进阶】C#集合 Collection

C# 集合有点像C++的STL容器,提供了一些常用的数据结构,二叉树、堆、栈等等。集合(Collection)类是专门用于数据存储和检索的类。这些类提供了对栈(stack)、队列(queue)、列表(list)和哈希表(hash table)的支持。大多数集合类实现了相同的接口。集合(Collection)类服务于不同的目的,如为元素动态分配内存,基于索引访问列表项等等。这

2017-08-24 19:46:36 265

空空如也

空空如也

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

TA关注的人

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