C++
肆零
这个作者很懒,什么都没留下…
展开
-
C++内存机制
C++内存管理[导语]内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃C++,转到Java或者.NET,他们的内存管理基本是自动的,当然你也放弃了自转载 2017-03-21 11:54:37 · 335 阅读 · 0 评论 -
数据结构系列之链表——双链表建立
(双链表就是双向的链表,有前驱和后继)建立时注意要开空间#include#include#include#includeusing namespace std; typedef struct student{ int data; struct student *next; struct student *pre;} dnode;原创 2017-03-15 18:16:51 · 329 阅读 · 0 评论 -
数据结构系列之链表——双链表删除
(循环判断移动指针、判断相等、分头分中,不等无法删除)dnode* del(dnode *head,int num){ //双链表删除值为num的节点 dnode *p1,*p2; p1=head; while(p1->data=num&& p1->next!=NULL) p1=p1->next; if(nu原创 2017-03-15 18:18:09 · 485 阅读 · 0 评论 -
数据结构系列之链表——循环链表(约瑟夫环)
已知n个人,编号1到n,围坐在一张圆桌周围,从k开始报数,数到m的人出列,下一个人又从k开始报数,到m出列,直至全出列。 步骤:1.建立一个有n个链节点无头节点的循环链表2.确定第一个报数人位置3.不断从链中删除节点至链表为空代码:#include#include#include#define ERROR 0 typedef struct原创 2017-03-15 18:23:18 · 949 阅读 · 1 评论 -
数据结构系列之链表——双链表插入
(p0开空间,赋值、循环判断移动指针、numdata,分头分中,否则为尾部插入)dnode* insert(dnode *head,int num){ dnode *p1,*p0; p1=head; p0=(dnode*)malloc(sizeof(dnode)); p0->data=num; while(num>p1->data&& p1->原创 2017-03-15 18:18:54 · 429 阅读 · 1 评论 -
C++大数乘法
#include #include using namespace std; void multiply(const char *a,const char *b); int main(){ //cout string num1,num2; // 初始状态用string来存储大数 cout cin>>num1>>num原创 2017-04-13 11:23:29 · 641 阅读 · 0 评论 -
二叉树深度优先遍历和广度优先遍历【C++】
深度优先遍历,也就深入的遍历,沿着每一个分支直到走到最后,然后才返回来遍历剩余的节点。二叉树不同于图,图需要标记节点是否已经访问过,因为可能会存在环,而二叉树不会出现环,所以不需要标记。那么,我们只需要一个栈空间,来压栈就好了。因为深度优先遍历,遍历了根节点后,就开始遍历左子树,所以右子树肯定最后遍历。我们利用栈的性质,先将右子树压栈,然后在对左子树压栈。此时,左子树节点是在top上的,所以可以先转载 2017-04-14 19:20:55 · 1969 阅读 · 0 评论 -
查缺补漏——define和inline
首先#define有很大的好处: 1.首先谈一下在C中使用这种形式宏定义的原因,C语言是一个效率很高的语言,这种宏定义在形式及使用上像一个函数,但它使用预处理器实现,没有了参数压栈,代码生成等一系列的操作,因此,效率很高,这是它在C中被使用的一个主要原因。 2.这种宏定义在形式上类似于一个函数,但在使用它时,仅仅只是做预处理器符号表中的简单替换,因此它不能进行参数有效性的检测,也就不能享转载 2017-05-05 20:45:13 · 266 阅读 · 0 评论 -
C++STL一般总结
C++ STL 一般总结以下内容来源网上 经过整合而成一、一般介绍 STL(Standard Template Library),即标准模板库,是一个具有工业强度的,高效的C++程序库。它被容纳于C++标准程序库(C++ Standard Library)中,是ANSI/ISO C++标准中最新的也是极具革命性的一部分。该库包含了诸多在计算机科学领域里所常用的基本数据转载 2017-08-29 22:00:39 · 265 阅读 · 0 评论 -
数据结构系列之链表——单链表遍历
单链表只遍历一次找中间位置的节点设两个指针,head步长为2,temp步长为1,当head到尾时temp到中间 void searchmid(node* head,node* mid){ node *temp=head; while(head->next->next!=NULL){ head=head->next->next;原创 2017-03-15 18:15:36 · 4169 阅读 · 0 评论 -
数据结构系列之链表——单链表逆置
node* reverse(node *head) { //单链表逆置 node *pPrev,*pNext; pPrev=NULL; while(head!=NULL) { pNext=head->next; head->next=pPrev; pPrev=head;原创 2017-03-15 18:14:40 · 712 阅读 · 0 评论 -
数据结构系列之链表——单链表排序
冒泡,从小到大,每轮将大的排后面node* sort(node *head){ //单链表从小到大排序 node *p; p=head; if(p==NULL&&p->next==NULL) return head; int n=length(head); for(inti=1;i从1开始原创 2017-03-15 18:13:23 · 625 阅读 · 0 评论 -
c++虚函数
面向对象程序设计中的多态性是指向不同的对象发送同一个消息,不同对象对应同一消息产生不同行为。在程序中消息就是调用函数,不同的行为就是指不同的实现方法,即执行不同的函数体。也可以这样说就是实现了“一个接口,多种方法”。 从实现的角度来讲,多态可以分为两类:编译时的多态性和运行时的多态性。前者是通过静态联编来实现的,比如C++中通过函数的重载和运算符的重载。后者则是通过动态联编来实现的,在C转载 2017-03-21 15:36:12 · 189 阅读 · 0 评论 -
C++关键点总结系列-2
变量及作用域自动变量 auto修饰,auto可省略函数中的形参、函数中定义的变量、复合语句中定义的变量,都是自动变量。 全局变量在函数外面定义的变量 可被每个函数使用 作用域:程序级或文件级存放在静态存储区默认初始值为0,可专门初始化 局部变量 在函数内部定义的变量或函数参数 只能在函数内部使用 作用域:函数级或块级存放在动态存储区原创 2017-03-14 09:38:35 · 327 阅读 · 0 评论 -
C++关键点总结系列-3
参数传递与内联函数参数传递:1.值传递形参,不影响实际2.地址传递被调用函数中对形参指针所指向的地址中内容的任何改变都会影响到实参3.引用传递对形参的任何操作都能改变相应的实参的数据引用通常被认为是另一个变量的别名,通过别名可直接访问这个变量 内联函数 函数的定义或声明前加上关键字inline则就把该函数定义为内联函数,它主要是解决程序的运行效率。原创 2017-03-14 09:40:43 · 281 阅读 · 0 评论 -
C++关键点总结系列-4
静态成员、友元和常类型静态成员静态成员数据成员 用static声明被该类所有对象共享,静态数据成员具有静态生存期必须在类外定义和初始化,用::指明所属的类,不能用构造函数初始化。类外引用: 可通过 类名::静态成员数据 或 对象.静态成员数据公共静态数据成员——可被类外部访问私有和保护静态数据成员——只能类内访问 初始化 数据类型类名原创 2017-03-14 09:44:47 · 311 阅读 · 0 评论 -
C++关键点总结系列-5
数组、指针和引用数组 构造型(组合型)数据类型 有一定顺序关系的若干相同类型变量的集合体 数组类型与数组元素类型相同。数组元素在内存中顺次存放、地址连续 可用下标访问 一维二维和多维如不初始化,Auto数组存在垃圾数据,static默认初始化为0部分初始化,其他默认为0 指针指针是内存地址,用于间接访原创 2017-03-14 09:48:07 · 766 阅读 · 0 评论 -
数据结构系列之链表——单链表的建立
#include#include#include#include#includeusingnamespace std;typedefstruct student{ int data; struct student *next;}node;node*create(){ node *head,*p,*s;原创 2017-03-15 18:08:48 · 483 阅读 · 0 评论 -
数据结构系列之链表——单链表删除值为num的节点
步骤:1.遍历链表,当num不等于节点值且next不为空时为p1/p2指针赋值2.判断p1值是否为num,是则分类分析,否则num不在链表里3.p1是头节点,删除时把head指向头节点的下一个节点,同时free p14.p1是中间节点,删除p2->next=p1->next, free p1 代码:node* del(node *head,int num){原创 2017-03-15 18:10:10 · 1646 阅读 · 0 评论 -
数据结构系列之链表——单链表插入值为num的节点
p0为待插入地址步骤:1.插入在头节点以前,p0->next=p1;head=p0;2.插入中间节点,p2->next=p0;p0->next =p1;3.插入尾节点,p1->next=p0;p0->next->NULL;代码:node* insert(node *head,int num){ //由小到大有序单链表插入值num的节点 node *p0原创 2017-03-15 18:12:13 · 417 阅读 · 0 评论 -
四种Cast
C++中的Cast引言在一次看More Effective C++中,有一节提到了《Prefer C++-Style Casts》。其中列举许多C++ Cast的一些好处,当然这些都是相对于C语言中的强制转换这类而言的。所以首先来了解C++中的Cast。一、Dynamic_Cast我们从适用范围来了解这个操作。转载 2017-09-01 21:55:09 · 865 阅读 · 0 评论