C++基础
文章平均质量分 50
cbyazz
这个作者很懒,什么都没留下…
展开
-
C++类型转换
1.static_cast 实现C++内置类型的相关转换 如int double struct 等,但不能进行不是基类和子类的转换。 如 int i,double t,i=static_cast(t)2.const_cast 实现将常量指针转换成非常量指针 如 const int *a;int *b=const_cast(a);3.dynamic_cast 运行时执行,原创 2017-08-10 15:55:31 · 162 阅读 · 0 评论 -
各种排序
插入排序: j位置的数插入到前面哪一个位置 冒泡排序:每一次遍历找出最大的数for(int i=1;i for(int j=i;j>0;j--) //前面为已经排好的数 for(int j=0;j {原创 2017-08-11 21:31:55 · 158 阅读 · 0 评论 -
二叉堆
堆是一棵完全填充的二叉树,可能的例外是在底层,底层上的元素是从左向右填入。但是堆不一定是完全二叉树堆的性质:1.父节点的值总是大于(或小于)任何一个子节点的值2.子树也是一个二叉堆。平时使用完全二叉树是为了易于存储和便于索引。易于存储:可以用一个数组就可以存储便于索引:假设一个节点的编号为i,他的左孩子编号为2*i,右孩子编号为2*i+1;插入,删除,合并两个堆复杂度均原创 2017-08-11 19:57:56 · 162 阅读 · 0 评论 -
继承
private成员:不能被继承private继承:父类的public和protected成员在子类中变为privateprotected继承;父类的public和protected成员在子类中变为protectedpublic继承;父类的成员属性在子类中保持不变private成员:1.该类的成员函数2.友元函数 该类对象不能访问protected成员:1.该原创 2017-08-11 16:40:56 · 133 阅读 · 0 评论 -
构造函数必须要初始化的数据成员
构造函数必须要初始化的数据成员1.const变量2.引用变量3.没有默认构造函数的类类型原创 2017-08-10 22:07:58 · 1417 阅读 · 0 评论 -
vector set map 容器比较
set:底层用红黑树实现,参数只有一个。seta; a.insert();a.clear();a.erase(0);map:底层同样用红黑树实现vector :内存只多不少内存增长机制:每当调用push_back,若当前容量不够放下新的元素,vector会重新申请一块新的内存,将旧的的内存数据拷贝到新的中,然后把新的元素拷贝到新的内存中,最后析构旧的vetcor并释原创 2017-08-10 21:53:21 · 208 阅读 · 0 评论 -
strcpy与strncpy
strcpy:char *strcpy(char *sd,const char *sy){ assert(sd!=NULL&&sy!=NULL); //assert:如果条件不成立就立刻终止程序 char *address=sd; while((*sd++=*sy++)!='\0') ; return add原创 2017-08-10 21:05:14 · 161 阅读 · 0 评论 -
动态分配对象与静态分配对象
动态分配对象:就是使用运算符new来创建一个类的对象,在堆上分配内存。静态分配对象:就是直接定义,在栈上分配内存。动态:将构造函数和析构函数定义为protected对象class A{ protected: A(){}; ~A(){}; public: static A*create() //static 才能允许直接类访问 A*a=A:原创 2017-08-10 17:16:44 · 1638 阅读 · 0 评论 -
二叉树非递归遍历(C++)
前序遍历 void f(TreeNode *r,vector&a){ stack s; TreeNode *t=r; while(!s.empty()||t) { if(t) { s.push(t); a.push_back(t->val); t=t->left;原创 2017-08-10 16:19:33 · 302 阅读 · 0 评论 -
设计模式
单例模式:保证一个类只有一个实例 如一个PC只能连一个鼠标Class A{private: A(){}; //构造函数设置为私有,防止类外产生对象实例 ~A(){ if(a==NULL) return; else delete a; a=0;} static A*a;public: st原创 2017-08-11 20:34:28 · 159 阅读 · 0 评论