c++基础知识点

 

1,vector,list,deque的实现。
    vector是一块连续内存,当空间不足了会再分配。
    list是双向链表。
    map封装红黑树
    deque是双端队列可在头和尾部插入、删除元素。
2,红黑树特性
    a. 节点不是red 就是black
    b. root为black
    c. 所有的leaf为black
    d. 所有red node 的孩子为black
    e. 任一node通过左子树和右子树到达叶子节点的black node个数相同
5,仿函数(functor),就是使一个类的使用看上去象一个函数。其实现就是类中实现一个operator(),这个类就有了类似函数的行为,就是一个仿函数类
6,适配器
     适配器也是一种常用的设计模式: 将一个class的接口转换为另一个class的接口,使得原本因接口不兼容而不能合作的classes可以一起运作
     容器适配器常
 
1 如果你需要高效的随即存取,而不在乎插入和删除的效率,使用vector
2 如果你需要大量的插入和删除,而不关心随即存取,则应使用list
3 如果你需要随即存取,而且关心两端数据的插入和删除,则应使用deque
 
 
STL容器元素必须满足以下三个基本要求
1)必须可透过copy构造函数进行复制。
    副本与原本必须相等,亦即所有相等测试的结果,原本与副本行为一致。所有容器都会在内部生成一个元素副本,并返回该暂时性副本,因此copy构造函数会被频繁地调用。

所以copy构造函数应该尽可能的优化。
2)必须可以透过assignment操作符完成赋值动作。
    容器与算法都使用assignment操作符,才能以新元素改写旧元素。
3)必须可以透过析构函数完成销毁动作。 

 

邻接表: 邻接表是图的一种链式存储结构。对图的每个顶点建立一个单链表(n个顶点建立n个单链表),第i个单链表中的结点包含顶点Vi的所有邻接顶点。又称链接表。
逆邻接表:某顶点个数是进结点下的结点数是入度的弧的数量,与邻接表相反。
十字链表: 有向图的另一种存储结构,目的是将在有向图的邻接表和逆邻接表中两次出现的同一条弧用一个结点表示
树节点的度: 为该节点子节点个数


设计模式是解决一类问题的方法,它是一种指导,有助于作出优良的设计方案
    单例模式
    工厂模式
    观察者模式
    适配

关联是表示两个类的一般性联系,比如“学生”和“老师”就是一种关联关系;
聚合表示has-a的关系,是一种相对松散的关系,聚合类不需要对被聚合类负责,如下图所示,用空的菱形表示聚合关系:
组合表示contains-a的关系,关联性强于聚合:组合类与被组合类有相同的生命周期,组合类要对被组合类负责,采用实心的菱形表示组合关系:

 
封装:将客观事物抽象成类,每个类对自身的数据和方法实行protection(private, protected,public)
继承:广义的继承有三种实现形式:实现继承(指使用基类的属性和方法而无需额外编码的能力)、可视继承(子窗体使用父窗体的外观和实现代码)、接口继承(仅使用属性和

方法,实现滞后到子类实现)。前两种(类继承)和后一种(对象组合=>接口继承以及纯虚函数)构成了功能复用的两种方式。
多态:系统能够在运行时,能够根据其类型确定调用哪个重载的成员函数的能力,称为多态性

posted on 2014-04-17 23:57  kangbry  阅读(238)  评论(0编辑  收藏  举报

导航