C++
清城无雪
这个作者很懒,什么都没留下…
展开
-
C++模板template用法总结
引言模板(Template)指C++程序设计设计语言中采用类型作为参数的程序设计,支持通用程序设计。C++ 的标准库提供许多有用的函数大多结合了模板的观念,如STL以及IO Stream。函数模板在c++入门中,很多人会接触swap(int&, int&)这样的函数类似代码如下:void swap(int&a , int& b) { int temp = a转载 2017-02-15 12:37:41 · 122220 阅读 · 8 评论 -
debug和release的区别
Debug 和 Release 并没有本质的区别,他们只是VC预定义提供的两组编译选项的集合,编译器只是按照预定的选项行动。如果我们愿意,我们完全可以把Debug和Release的行为完全颠倒过来。当然也可以提供其他的模式,例如自己定义一组编译选项,然后命名为MY_ABC等。习惯上,我们仍然更愿意使用VC已经定义好的名称。 Debug版本包括调试信息,所以要比Release版本大很多(可能...原创 2018-01-02 20:00:08 · 19812 阅读 · 0 评论 -
C++ 堆和栈的区别 内存分配方式理解
栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。在一个进程中,位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数的调用。和堆一样,用户栈在程序执行期间可以动态地扩展和收缩。 堆,就是那些由 new 分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个 new 就要对应一个 delete。如果程序员没有释原创 2017-11-16 14:38:00 · 6509 阅读 · 1 评论 -
程序的内存分配之堆和栈的区别
堆栈概述 在计算机领域,堆栈是一个不容忽视的概念,堆栈是两种数据结构。堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。在单片机应用中,堆栈是个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场。要点: 堆,优先队列(priority queue);普通的队列是一种先进先出的数据结构(FIFO—First-In/Fi原创 2017-11-16 14:13:22 · 918 阅读 · 0 评论 -
c++ assert() 使用方法
ssert宏的原型定义在中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:#include void assert( int expression );assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。请看下面的程序清单badptr.c:#in转载 2017-11-16 13:41:57 · 557 阅读 · 0 评论 -
strcmp函数与strcpy函数
(一)strcmp函数 strcmp函数是比较两个字符串的大小,返回比较的结果。一般形式是: i=strcmp(字符串,字符串); 其中,字符串1、字符串2均可为字符串常量或变量;i 是用于存放比较结果的整型变量。比较结果是这样规定的: ①字符串1小于字符串2,strcmp函数返回一个负值;②字符串1转载 2017-10-09 23:41:45 · 377 阅读 · 0 评论 -
const的用法
在普通的非 const成员函数中,this的类型是一个指向类类型的 const指针。可以改变this所指向的值,但不能改变 this所保存的地址。在 const成员函数中,this的类型是一个指向 const类类型对象的 const指针。既不能改变 this所指向的对象,也不能改变 this所保存的地址。 关键字:Const,Const函数,Const变量,函数后转载 2017-09-25 18:44:51 · 209 阅读 · 0 评论 -
数组指针和指针数组的区别
数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。 p=a;转载 2017-09-23 11:26:35 · 204 阅读 · 0 评论 -
C++ 详解深贝与浅拷贝
当用一个已初始化过了的自定义类类型对象去初始化另一个新构造的对象的时候,拷贝构造函数就会被自动调用。也就是说,当类的对象需要拷贝时,拷贝构造函数将会被调用。以下情况都会调用拷贝构造函数:(1)一个对象以值传递的方式传入函数体 (2)一个对象以值传递的方式从函数返回 (3)一个对象需要通过另外一个对象进行初始化。如果在类中没有显式地声明一个拷贝构造函数,那么,编译器将会自动生成一原创 2017-04-07 09:49:15 · 332 阅读 · 0 评论 -
数据结构――堆的基本概念及其操作
在我刚听到堆这个名词的时候,我认为它是一堆东西的集合... 但其实吧它是利用完全二叉树的结构来维护一组数据,然后进行相关操作,一般的操作进行一次的时间复杂度在 O(1)~O(logn)之间。 可谓是相当的引领时尚潮流啊(我不信学信息学的你看到log和1的时间复杂度不会激动一下下)!。 什么是完全二叉树呢?别急着去百度啊,要百度我帮你百转载 2017-05-03 20:50:24 · 847 阅读 · 0 评论 -
拷贝构造函数相关知识总结
在C++中,下面三种对象需要调用拷贝构造函数!1. 对象以值传递的方式传入函数参数[c-sharp] view plain copyclass CExample { private: int a; public: //构造函数 CExample(int b) { a = b;翻译 2017-03-14 21:45:04 · 279 阅读 · 0 评论 -
二叉树的线索化详解
首先,什么是二叉树的线索化,为什么要对二叉树线索化?二叉树是一种非线性结构,遍历二叉树几乎都是通过递归或者用栈辅助实现非递归的遍历。用二叉树作为存储结构时,取到一个节点,只能获取节点的左孩子和右孩子,不能直接得到节点的任一遍历序列的前驱或者后继。为了保存这种在遍历中需要的信息,我们利用二叉树中指向左右子树的空指针来存放节点的前驱和后继信息n个节点的二叉树中含有n+1个空指针转载 2017-04-07 10:25:21 · 1729 阅读 · 0 评论 -
非递归实现二叉树的遍历
1、先序遍历基本思想:1>首先定义一个栈,每遇到一个节点,就对其数据进行访问;然后将其入栈,将当前节点的左孩子赋给它,循环此过程,直到最左节点被访问并被压入栈中。2>出循环后用临时变量保存栈顶节点,然后对栈顶节点进行出栈操作,到此说明当前节点以及其左子树已被访问过了。3>将临时变量的右孩子赋给当前节点,用子问题的方式去访问其右子树。[翻译 2017-03-30 21:07:53 · 230 阅读 · 0 评论 -
STL 关联式容器 Set与Map的用法
C++的标准模板库(简称STL)是一个容器和算法的类库。容器往往包含同一类型的数据。set是一种关联式容器,其特性如下:set以RBTree作为底层容器所得元素的只有key没有value,value就是key不允许出现键值重复所有的元素都会被自动排序不能通过迭代器来改变set的值,因为set的值就是键定义一个元素为整数的集合a,可以用set a;转载 2017-02-15 23:41:16 · 538 阅读 · 0 评论 -
VS下如何调试程序
程序崩溃的原因分类函数栈溢出 一个变量未初化、未赋值,就读取它的值。 ( 这属于逻辑问题,往往是粗心大意的导致的 )函数栈溢出 (1)定义了一个体积太大的局部变量 (2)函数嵌套调用,层次过深(如无穷递归)数组越界访问 访问数组元素时,下标越界指针的目标对象不可用 (1)空指针 (2)野指针 指针未赋值free/delete释放了的对象不恰当的指针强制转换1 导言在软件开发周期中,测试和修正缺陷(...原创 2018-02-25 15:20:58 · 58680 阅读 · 4 评论