摘要: 约瑟夫环 问题描述: m个人围成一个圈,指定一个数字n,从第一个人开始报数,每轮报到n的选手出局,由下一个人接着从头开始报,最后一个人是赢家。其中m 1,n 2。 链表法 用循环链表能完美契合本题 递归 //TO DO 参考链接: 1. "约瑟夫环 递归分析数学解法" 阅读全文
posted @ 2020-02-28 01:50 MenciusYue 阅读(16664) 评论(0) 推荐(0)
摘要: 单链表 链表的结点 链表的打印 Notes: 1. 链表的head不存储数据。 2. 链表的最后一个元素的next指向NULL。 C++ Node HeadInsert(Node head,int arr[],int arrSize){ head = NULL; //Notes:1 for(int 阅读全文
posted @ 2020-02-27 03:10 MenciusYue 阅读(178) 评论(0) 推荐(0)
摘要: 类模板的使用 注意在每次类模板函数时都需要声明一个类模板 阅读全文
posted @ 2020-02-24 20:17 MenciusYue 阅读(880) 评论(0) 推荐(0)
摘要: 函数模板的使用 函数模板在使用之前必须在外部对函数模板进行初始化。 函数模板的实例化包含两中 1.隐式实例化: 2.显式实例化: 阅读全文
posted @ 2020-02-24 20:15 MenciusYue 阅读(294) 评论(0) 推荐(0)
摘要: 函数的值传递、指针传递、引用传递 值传递 形参是实参的拷贝,该表形参的值并不会影响外部的实参。值传递是单向的(实参 形参),参数的值只能传入,不能传出。当函数内部需要修改参数并且不影响调用者时,采用值传递。 指针传递 形参为指向实参的地址,当对形参的指向操作时,相当于对实参本身进行操作。 指针传递方 阅读全文
posted @ 2020-02-24 20:12 MenciusYue 阅读(304) 评论(0) 推荐(0)
摘要: 内存管理 内存管理由三种方式: 1. 自动存储 2. 静态存储 3. 动态存储 自动存储 对于函数的形参、函数内部变量、和结构体变量等,编译器在函数运行过程中在栈中自动对其分配内存,调用结束后对其进行销毁。变量的声明周期只存在于当前代码块,这使得程序员可以在不同函数内使用相同的变量名。 c++对栈存 阅读全文
posted @ 2020-02-24 20:06 MenciusYue 阅读(578) 评论(0) 推荐(0)
摘要: 结构体与共用体的sizeof 结构体的sizeof 结构体变量占用的内存空间大小通常是其基本类型的大小,但是由例外(字节对齐机制) 当存在结构体的嵌套时,将结构体打散,最大的基本类型的大小最为字节对齐数,再一次将数据放入,如果有需要编译器会在成员之间添加填充字节。 tips: sizeof和strl 阅读全文
posted @ 2020-02-24 20:04 MenciusYue 阅读(564) 评论(0) 推荐(0)
摘要: 虚函数 虚函数的工作原理 虚函数的实现要求对象携带额外的信息,这些信息用于确定运行时调用哪一个虚函数,这一信息具有一种被称为虚函数表指针(vptr)的指针形式。vptr指向一个被称为虚函数表(vtbl)的函数指针数组,每一个包含虚函数的类都关联到一个vtbl。当一个对象调用了一个虚函数,实际被调用的 阅读全文
posted @ 2020-02-24 00:16 MenciusYue 阅读(474) 评论(0) 推荐(0)
摘要: 重载、覆盖、隐藏 重载 在同一类定义的成员函数中,参数不同的同名函数为重载关系。重载与虚函数无关。 覆盖 派生类的成员函数覆盖了基类中的同名函数。参数相同且基类中的同名函数为虚函数时会覆盖。 隐藏 派生类的成员函数屏蔽基类中的同名函数。 1. 参数相同且基类同名函数不虚 2. 参数不同 阅读全文
posted @ 2020-02-24 00:13 MenciusYue 阅读(318) 评论(0) 推荐(0)
摘要: 派生类的构造与析构 派生类的构造 派生时构造函数与析构函数不会被继承,需要重新定义派生类的构造函数与析构函数。派生类对象包含了基类对象的值,创建派生类时首先会调用基类的构造函数,若派生类中含有其它类对象成员,则需要在初始化列表中对其进行初始化。 派生类名(派生类构造函数的参数列表):基类名(基类构造 阅读全文
posted @ 2020-02-24 00:08 MenciusYue 阅读(260) 评论(0) 推荐(0)