红黑树笔记

红黑树笔记

节点是红色或者黑色根节点必须是黑色黑色节点的子节点可以是黑色或者是红色每个红色节点必须有两个黑色子节点从任何一节点到每个叶子节点的所有简单路径都包含相同数目的黑色节点自平衡二叉搜索树

shared_ptr 与 make_shared  初识

shared_ptr 与 make_shared 初识

#define _ALLOCATE_MAKE_SHARED( \ TEMPLATE_LIST, PADDING_LIST, LIST, COMMA, X1, X2, X3, X4) \template<class _Ty COMMA LIST(_CLASS_TYPE)> inline \ shared_ptr<_Ty&

类模板,模板类的友元函数、模板类的左移运算符重载

类模板,模板类的友元函数、模板类的左移运算符重载

类模板在声明与实现分开为两个文件时,在使用时需要使用  类模板的.cpp文件(一般重命名为.hpp)类模板的友元函数需要在声明的时候加上 template<typename T> 的标识在具体实现的时候同样需要加上template<typename T>标识,并且所有的使用到的类型的地方需要加上<T>.h声明template<typename T>friend A<T> addA(const A<T>& a

函数模板与模板函数

函数模板与模板函数

模板函数是函数模板在编译的时候  根据推导或者具体化类型  根据函数模板生成的一个具体类型的函数函数模板对类型需要严格的匹配,不支持自动类型转换当普通函数与函数模板同时存在时,优先匹配普通函数。可以通过  函数名<>()  的方式,调用函数模板如果函数模板有更优的匹配(不需要隐式的类型转),优先使用函数模板而不是选择需要隐式转换类型的普通函数函数模板可以嵌套调用

类的析构函数是否一定要定义为vietual  虚函数

类的析构函数是否一定要定义为vietual 虚函数

当一个父类的指针  指向一个子类的对象,如果父辈的析构函数没有定义为virtual  虚函数,在执行delete  释放父类指针的时候,子类的虚函数则不会调用,导致内存泄漏。但是类的析构函数并不是一定要定义为virual!多态:virtual 虚函数,子类重写父类虚函数子类的虚函数表直接复制父类的虚函数表如果子类重写了父类的某个虚函数那么就替换复制的虚函数表如果子类增加了新的虚函数,就把虚函数添加到虚函数表的尾部

final  override  reportSingleClassLayout

final override reportSingleClassLayout

/d1 reportSingleClassLayoutSon final :class A final{}//A 不可以被继承class B{    virtual void func1() final ;   //该虚函数可以被继承  但是不能被重写了}Override:  覆盖重写子类中告诉代码编辑人员,这个虚函数是重写的父类的虚函数。如果父类不存在这个虚函数则报错。只需要在函数声明的时候使用。

map 基础使用----实现一个统计字符数量的算法

map 基础使用----实现一个统计字符数量的算法

#include <map>#include <algorithm>关键字:map、inster、earse、pair、iterator、const_iteratortemplate<class T>void printMap_Vector(T & tmp_con)  //模板函数,输出map与保存map元素迭代器的vector/*********************************************************

C++《数据结构与算法》-->双向链表

C++《数据结构与算法》-->双向链表

#include<iostream>using namespace std;typedef struct _DoubleList{ int Data;   //双向链表的数据域 struct _DoubleList * perv;//指向前一个节点的指针域 struct _DoubleList * next;//指向后

C++《数据结构与算法》-->单链表

C++《数据结构与算法》-->单链表

#include<iostream>typedef struct _LinkList { int Data;//链表数据域 struct _LinkList *next;//链表节点域 指向下一个节点地址}LinkList,LinkNode;//LinkList 作为链表节点类型使用,LinkNode 作为链表节点使用。//初始化链表bool i

C++《数据结构与算法》-->顺序表

C++《数据结构与算法》-->顺序表

#include<iostream>using namespace std;#define MAX_SIZE 50typedef struct {    int *elems;//顺序表的首地址    int length;//顺序表的元素数量    int&