C++
小时候挺菜
这个作者很懒,什么都没留下…
展开
-
算法复杂度与稳定性
时间复杂度是一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度,算法所耗时长和算法的时间复杂度成正比。记为T(n)。转载 2017-09-04 17:47:18 · 304 阅读 · 0 评论 -
数组查找元素
#include#includevoid shuzhu1(int a[],int n)//找出数组中第一次出现只1次的数{ int i,c=0; for(i=0;i<n;i++) { for(int j=i;j<n;j++) { if(a[i]==a[j]) { c++; } } if(c==1) { printf("%d",a[i]原创 2017-09-04 17:54:08 · 259 阅读 · 0 评论 -
debug和release的区别
Debug和Release,主要是针对其面向的目标不同的而进行区分的。Debug通常称为调试版本,通过一系列编译选项的配合,编译的结果通常包含调试信息,而且不做任何优化,以为开发人员提供强大的应用程序调试能力。而Release通常称为发布版本,是为用户使用的,一般客户不允许在发布版本上进行调试。所以不保存调试信息,同时,它往往进行了各种优化,以期达到代码最小和速度最优。为用户的使用提供便利。原创 2017-09-05 01:01:00 · 316 阅读 · 0 评论 -
拷贝构造函数
在C++中,三种对象需要调用拷贝构造函数:1.对象以值传递的方式传入函数参数,即函数的输入形参是一个类对象,调用函数的时候会调用实参的拷贝构造函数传给形参对象,在函数执行完之后释放。2.对象以值传递的方式从函数返回,即函数的返回值是一个类对象,在函数执行完后释放函数内类对象。3.对象需要通过另外一个对象进行初始化,相当于直接拷贝 Example a(1); Example b原创 2017-09-11 16:03:04 · 169 阅读 · 0 评论 -
多态中的指针
一、父类指针指向子类对象首先,来看一段代码://用父类指针指向子类对象class A {public:A() { printf("A \n"); }~A() { printf(" ~A \n"); } // 这里不管写不写virtual,删除B对象的时候,都会被执行。因为这个例子是B*指针指向B对象,不是A*指针指向B对象。};class B : public A{pu...原创 2018-11-20 10:06:00 · 1381 阅读 · 0 评论 -
C++虚函数与纯虚函数用法与区别
1. 虚函数和纯虚函数可以定义在同一个类(class)中,含有纯虚函数的类被称为抽象类(abstract class),而只含有虚函数的类(class)不能被称为抽象类(abstract class)。2. 虚函数可以被直接使用,也可以被子类(sub class)重载以后以多态的形式调用,而纯虚函数必须在子类(sub class)中实现该函数才可以使用,因为纯虚函数在基类(base class...原创 2018-11-12 12:48:00 · 158 阅读 · 0 评论 -
虚函数
众所周知,C++虚函数是一大难点,也是面试过程中必考部分。此次,从虚函数的相关概念、虚函数表、纯虚函数、再到虚继承等等跟虚函数相关部分,做一个比较细致的整理和复习。虚函数 OOP的核心思想是多态性(polymorphism)。把具有继承关系的多个类型称为多态类型。引用或指针的静态类型与动态类型不同这一事实正是C++实现多态性的根本。 C++ 的多态实现即是通过虚函数。在C++中,基类将类...转载 2018-11-12 12:45:00 · 123 阅读 · 0 评论 -
深拷贝和浅拷贝(二)
对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。 #include <iostream>using namespace std;class CExample {private: int a;public: ...转载 2018-11-05 15:27:00 · 83 阅读 · 0 评论 -
命名空间的作用
来源:https://blog.csdn.net/LF_2016/article/details/51930792一、为什么使用命名空间 一个大型的工程往往是由若干个人独立完成的,不同的人分别完成不同的部分,最后再组合成一个完整的程序。由于各个头文件是由不同的人设计的,有可能在不同的头文件中用了相同的名字来命名所定义的类或函数,这样在程序中就会出现名字冲突。不仅如此,有可能我们自己定义的...转载 2018-08-14 18:09:00 · 859 阅读 · 0 评论 -
快速排序
快速排序核心思想:从数列中取出一个数作为基准数。将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。再进行递归,最后只有三个数,即基准数左右都只剩下一个数。/* * Quick.c * * Created on: 2017年4月18日 * Author: zzd */#include#includevoid Quick(int a[],int l,int原创 2017-09-04 17:21:08 · 169 阅读 · 0 评论 -
杨辉三角
#include#includeint main(){ int a[10][10]; for(int i=0;i<10;i++) { a[i][0]=a[i][i]=1; } for(int i=2;i<10;i++) { for(int j=1;j<i;j++) { a[i][j]=a[i-1][j-1]+a[i-1][j]; } }原创 2017-09-01 14:06:25 · 253 阅读 · 0 评论 -
嵌入式(C)笔试题
1 读程序段,回答问题(a) int main(int argc,char *argv[]){int c=9,d=0;c=c++%5;d=c;printf("d=%d\n",d);return 0;}a) 写出程序输出b) 在一个可移植的系统中这种表达式是否存在风险?why?答案:5存在风险,因为c=c++%5;这个表达式对c有两次修改,行为未定转载 2017-09-14 11:43:15 · 2093 阅读 · 0 评论 -
虚函数
这是我看到的一个虚函数的代码:#include#includeusing namespace std;class A{public: void foo() { printf("1\n"); } virtual void fuu() { printf("2\n"); }};clas原创 2017-09-01 13:56:25 · 334 阅读 · 0 评论 -
虚函数表(转)
C++通过继承(inheritance)和虚函数(virtual function)来实现多态性。所谓多态,简单地说就是,将基类的指针或引用绑定到子类的实例,然后通过基类的指针或引用调用实际子类的成员函数(虚函数)。本文将介绍单继承、多重继承下虚函数的实现机制。转自 http://songlee24.github.io/2014/09/02/cpp-virtual-table/ 神奕转载 2017-09-01 13:57:53 · 222 阅读 · 0 评论 -
虚基类的子类的构造函数
class A{ public: A(const char *s) {cout ~A() {};};class B:virtual public A{ public: B(const char *s1,const char *s2):A(s1) { cout }};class C:virtual public A转载 2017-09-01 13:59:01 · 448 阅读 · 0 评论 -
函数指针
之前经常见到这样的代码:typedef int (*Func)(int a ,int b);一开始不知道这是什么意思,每次翻阅资料和各位大牛博客之后一目了然,但是过了一段时间又忘记了,归根结底是当时学C的时候就没有重视这基础,再加上后来练习的越来越少,更是蒙了。于是记录在这里自己的想法,以后晚上睡前来看看,毕竟温故而知新,当然还得多加练习。这个typ原创 2017-09-01 14:00:02 · 211 阅读 · 0 评论 -
二分查找
#include#includeint erFensearch(int a[],int n,int key){int low=0;int high=n-1;while(low<=high){int mid=(low+high)/2;if(a[mid]else if(a[mid]>key) high=mid-1;else return mid;}return -1;}原创 2017-09-01 14:02:11 · 185 阅读 · 0 评论 -
冒泡排序和插入排序,选择排序
#include#includevoid Embed(int a[],int n){ int temp; int i,j; for(i=1;i<n;i++) { if(a[i]<a[i-1]) { temp=a[i]; for(j=i-1;(a[j]>temp)&&(j>=0);j--) { a[j+1]=a[j]; a[j]=temp;原创 2017-09-01 14:03:54 · 272 阅读 · 0 评论 -
归并排序
#include#includevoid GuiBing(int a[],int first,int mid,int last,int c[]){ int i=first; int j=mid+1; int m=mid; int n=last; int k=0; while((i<=m)&&(j<=n)) { if(a[i]<=a[j]) c[k++]=a[i++]原创 2017-09-01 14:05:38 · 179 阅读 · 0 评论 -
深拷贝和浅拷贝(一)
1. 浅拷贝 所谓浅拷贝,指的是在对象复制时,只对对象的数据成员进行复制,但是遇到有动态成员如指针时就会出问题。[c-sharp] view plain copy class Rect { public: Rect() // 构造函数,p指向堆中分配的一空间 { p = new int(100); ...转载 2017-09-11 16:24:00 · 104 阅读 · 0 评论