
c++
no_name_sky
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
浅谈多态中的虚函数和虚表
需要实现多态必不可少的就是虚函数,类的成员函数前加virtual关键字,这个成员函数就是虚函数;例如:class T{ public: virtual void fun() { cout<<"fun()"<<endl; } int _t;};在不加virtual的情况下:sizeof(T)的大小为4;加了vitual变成虚函数之后:sizeof(T)的大小为8;原创 2017-02-16 17:18:28 · 459 阅读 · 0 评论 -
菱形继承与虚拟继承
c++中的继承有单继承和多继承;本文主要探索的是多继承中菱形继承的二义性和数据冗余及解决方案;菱形继承的对象模型: 从内存看菱形继承对象模型:用一个简易 的代码来说明二义性和数据冗余这个问题:class AA{public: int _aa;};class BB : pu原创 2017-02-15 15:48:54 · 270 阅读 · 0 评论 -
红黑树--RBTree
红黑树是一颗二叉搜索树,每个节点增加了一个保存节点颜色的存储位;可以是红(Red)或黑(Black);红黑树是AVL树的变种, 红黑树通过一些着色法则确保没有一条路径会比其它路径长出两倍,因而达到接近平衡目的。红黑树的特性:(1)根节点是黑色。(2)每个节点或者是黑色,或者是红色。(3)从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。(4)如果一个节原创 2020-08-20 22:03:52 · 488 阅读 · 0 评论 -
实现一个时间效率为O(N)的排序算法
如果这些数字的大小在一个明确的范围内,这个范围不是特别大,就可以借助辅助空间实现时间效率为O(N),让我们从例子中来体会这中思想;例:对公司所有员工的年龄进行排序,公司总共有几万名员工,对年龄进行排序,可以使用辅助空间,要求时间复杂度为O(N)。分析:年龄肯定是有一定范围的,1--100是基本的寿命,所以我们开辟一个大小为101的数组age,每个数组的下标表示年龄,里面存放的是这个年龄出现原创 2017-05-03 16:27:45 · 2097 阅读 · 0 评论 -
二分法的变种
二分法查找使用的前提是一串数据必须是有序的(递增或递减),时间复杂度是O(lgN),查找速度特别快;但是对于这样一串数据4 5 6 1 2 3,前一部分是递增,后一部分也是递增,这样一串数据怎么去使用二分法查找呢?把一个数组最开始的若干个元素搬到数组的末尾,称之为数组的旋转。上面的 4 5 6 1 2 3就是数组 1 2 3 4 5 6的一个旋转。看看这样一道题:输入一个递增排序的数组的一原创 2017-05-03 19:45:47 · 453 阅读 · 0 评论 -
直接插入排序和希尔排序
插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据。直接插入排序:每次将一个待排序的元素,与已排序的元素从尾到头进行比较,找到合适位置进行插入;对一个乱序数组进行排序,将第一个元素看作是有序数组,后面的元素是待插入元素,进行直接插入排序,在这个有序数组的基础上插入后面的数据,直到所有数据全部直接插入排序完成。voi原创 2017-05-08 18:45:51 · 358 阅读 · 0 评论 -
智能指针--scoped_ptr shared_ptr weak_ptr
所谓智能指针就是智能/自动化的管理指针所指向的动态资源的释放;scopde_ptr--防拷贝什么叫做防拷贝?就是不允许一个地址空间的指针赋值给另一个指针,导致有两个指针指向同一个地址;也就是说防拷贝能保证地址与指针是一一对应的关系;实现方法:要拷贝,就需要通过对象来调用赋值运算符重载函数/拷贝构造函数,只要将这两个成员函数私有化/保护化,就ok啦;具体代码: template原创 2017-08-11 13:01:33 · 338 阅读 · 0 评论 -
水果的top k问题
题目:本公司现在要给公司员工发波福利,在员工工作时间会提供大量的水果供员工补充营养。由于水果种类比较多,但是却又不知道哪种水果比较受欢迎,然后公司就让每个员工报告了自己最爱吃的k种水果,并且告知已经将所有员工喜欢吃的水果存储于一个数组中。然后让我们统计出所有水果出现的次数,并且求出大家最喜欢吃的前k种水果。void AdjustDown(vector* >& rel, size_t i原创 2017-08-05 11:07:22 · 340 阅读 · 0 评论