C/C++ 简单小结

来源:互联网 发布:金融数据来源 编辑:程序博客网 时间:2024/06/05 14:29

C/C++ 小结
其实,C++ 的总结可以试用 C 的总结。并不用分开来备。
(这些仅是为了应付考试而准备的简述)

C/C++ 学习小结
学了什么?
除最基本的 if else / while / do while /switch / = 等赋值、条件分支、判断、循环等基本语法外;
还引入了一小部分算法(如冒泡、简单的二分法、快排 等)还讲解了一些简单的数据结构。
堆、栈、队列、和 链表(结构体的应用)。

冒泡怎么实现的?
循环遍历中调用循环遍历,以此来实现排序。每次最内层循环遍历会把大(或小)的值放到尾部或头部
for( ; ; )
{
for(;;)
{}
}
效率较低O(n^2)

二分实现原理?
递归取中值分开;时间复杂度可以表示O(h)=O(log2n);
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。

快排原理?
它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

堆:
堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质:
·堆中某个节点的值总是不大于或不小于其父节点的值;
·堆总是一棵完全二叉树。

栈:先入后出,一种基础存储结构;
队列:先入先出,一种基础存储结构;

链表:
主要有循环链表、单链表、双向链表等等,指针是C的灵魂,同样也是链表的精华。链表的主要优势及适应范围都在 指针上。
单链表: 结构体的尾部是指向下一个节点的指针,方便找到下一项内容的存储位置;
双项链表:指针既指向下一项内容,同时存在另一个指针指向他的上一项任容的存储位置;
循环链表:
尾项指针指向首项内容存在的位置;

C++:
是C的超集,既面向过程,又面向对象。
除了C的基本语法外,多出了类和对象及其的衍生。
面向对象的三个基本特征:
继承、封装、多态:
其中,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态则是为了实现另一个目的——接口重用!
什么是封装?
封装可以隐藏实现细节,使得代码模块化;封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。在面向对象编程上可理解为:把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。
继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。其继承的过程,就是从一般到特殊的过程。
通过继承创建的新类称为“子类”或“派生类”。被继承的类称为“基类”、“父类”或“超类”。要实现继承,可以通过“继承”(Inheritance)和“组合”(Composition)来实现。在某些 OOP 语言中,一个子类可以继承多个基类。但是一般情况下,一个子类只能有一个基类,要实现多重继承,可以通过多级继承来实现。
继承的实现方式?
继承概念的实现方式有三类:实现继承、接口继承和可视继承。
1. 实现继承是指使用基类的属性和方法而无需额外编码的能力;
2. 接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力;
3. 可视继承是指子窗体(类)使用基窗体(类)的外观和实现代码的能力。

什么是多态?
多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。
多态的实现方式分析?
实现多态,有二种方式,覆盖,重载。覆盖:是指子类重新定义父类的虚函数的做法。重载:是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。