- 博客(8)
- 收藏
- 关注
原创 STL常见面试题
1.C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作。vector封装数组,list封装了链表,map和set封装了二叉树等2.标准关联容器set, multiset, map, multimap内部采用的就是一种非常高效的平衡检索二叉树:红黑树,也成
2013-09-28 00:15:05
513
原创 为什么通常牛顿法比梯度下降法能更快的收敛
问题:为什么通常牛顿法比梯度下降法能更快的收敛?解答:牛顿法是二阶收敛,梯度下降是一阶收敛,所以牛顿法就更快。如果更通俗地说的话,比如你想找一条最短的路径走到一个盆地的最底部,梯度下降法每次只从你当前所处位置选一个坡度最大的方向走一步,牛顿法在选择方向时,不仅会考虑坡度是否够大,还会考虑你走了一步之后,坡度是否会变得更大。所以,可以说牛顿法比梯度下降法看得更远一点,能更快地走到最底部。
2013-09-28 00:10:33
690
转载 设计模式(C++实现):simple factory pattern + singleton pattern
1简单工厂模式简单工厂模式按照设计模式类型分的话是属于创建型模式,他是工厂模式中最简单的一种,他不属于GoF 23中设计模式之一,但是是简单实用的。他是有一个工厂对象来决定创建哪一种对象的实例。实现比较简单,这里我只贴出类图和调用方法: [cpp] view plaincopyIProduct * simple
2013-09-17 15:30:07
470
转载 求数组两两之差绝对值最小的值
一 题目描述: 有一个整数数组,请求出两两之差绝对值最小的值,只要求出最小值即可,不要求求出是哪两个数。 二 常规思路: 求解此题的寻常思路是什么?观察题目我注意到后面强调不要求求出两个数,那么最最简单的O(n^2)的算法显然做了很多无用功。嗯,好,既然这个办法不行想想其他的。对于数组也就是序列之类的题,有一种很常用的思路那就是预处理。这道题目貌似
2013-09-11 22:06:50
2659
转载 红黑树
AVL-tree、RB-tree、AA-tree均可以实现平衡的二叉查找树,虽然相对于一般的二叉搜索树其插入、删除节点的平均时间会比较长,但它们可以避免极验证应付的最坏的情况--树高度不平衡。平衡二叉查找树所谓的平衡并不是绝对的平衡,而是要求任何一个节点的左右子树高度相差不会超过1,此时仍能够保证树的“对数深度”。在学习红黑树之前要先学习AVL树,了解一些旋转操作是怎么进行的。
2013-09-11 22:06:33
561
转载 C++中关于虚拟继承的一些总结
1.为什么要引入虚拟继承虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。如:类D继承自类B1、B2,而类B1、B2都继承自类A,因此在类D中两次出现类A中的变量和函数。为了节省内存空间,可以将B1、B2对A的继承定义为虚拟继承,而A就成了虚拟基类。实现的代码如下:class Aclass B1:public virtual A;class B2:p
2013-09-11 21:57:07
403
转载 关于C++中static关键字的几点总结
static主要有三个作用: (1)局部静态变量(2)外部静态变量/函数(3)静态数据成员/成员函数前两种C和C++都有,第三种仅在C++中有,下面分别作以下介绍:一、局部静态变量 在C/C++中, 局部变量按照存储形式可分为三种auto, static, register。其中register不常用到,下面主要说说auto和static的区别。
2013-09-11 21:55:50
396
转载 static在C和C++中的用法和区别
static主要有三个作用: (1)局部静态变量(2)外部静态变量/函数(3)静态数据成员/成员函数前两种C和C++都有,第三种仅在C++中有,下面分别作以下介绍:一、局部静态变量 在C/C++中, 局部变量按照存储形式可分为三种auto, static, register。其中register不常用到,下面主要说说auto和static的区别。
2013-09-11 21:39:24
410
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人