
C++
ascend__a1
早起的菜鸟有虫吃
展开
-
面向对象和面向过程的区别
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。 面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。例如五子棋,面向过程的设计思路就是首先分析问题的步骤:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,转载 2013-10-17 09:24:46 · 657 阅读 · 0 评论 -
make_pair
【好记性不如烂笔头:在《C++ Templates》看到这个函数,发现正是前段时间写项目程序所要用到的,可惜当时还不知道有这个用法,当时是自己写了个结构体。。】Utilities 由短小精干的类和函数构成,执行最一般性的工作。 这些工具包括: general types 一些重要的C函数 numeric limitsPairs C++标准程序库中凡是“必须返回转载 2014-08-29 20:47:36 · 421 阅读 · 0 评论 -
程序在内存中的分布
在现代的操作系统中,当我们说到内存,往往需要分两部分来讲:物理内存和虚拟内存。从硬件上讲,虚拟空间是CPU内部的寻址空间,位于MMU之前,物理空间是总线上的寻址空间,是经过MMU转换之后的空间。一般我们所说的程序在内存中的分布指的就是程序在虚拟内存中的存储方式。从低地址到高地址,可分为下面几段: 预留内存地址(操作系统维护的内存地址,不可访问) 程序代码区(只读,存代码和一转载 2014-08-30 09:34:07 · 444 阅读 · 0 评论 -
C++中的system("pause");
C++中的system命令主要是调用所在系统的命令行,pause会输出"请按任意键继续. . ."然后等你敲一下键盘一般是为了看清楚输出的结果,因为程序运行完以后窗口就会关闭,这样就看不到输出的结果了.所以可以把这个system("pause");放在main函数的return之前.原创 2014-08-30 11:34:42 · 32649 阅读 · 3 评论 -
linux中fork()函数详解
一、fork入门知识 一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。 一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来转载 2014-08-30 16:25:03 · 478 阅读 · 0 评论 -
c/c++ int _tmain(int argc, _TCHAR* argv[])
在visual c++ 2005/8 中,当选择编辑一个32位Win32控制台应用程序时.初始状态下系统自带函数: int _tmain(int argc, _TCHAR* argv[]) { return 0; } 上述Win32控制台应用程序的入口程序是用来存放机器的一个环境变量的,如:机器名,系统信息等. 其中: int转载 2014-08-31 16:08:21 · 2182 阅读 · 0 评论 -
快速排序
(1)基本原理:先在数组中选择一个数字,接下来把数组中的数字分为两部分,比选择的数字小的数字移动到数组的左边,比选择的数字大的数字移到数组的右边。然后用递归的思路分别对每次选中的数字左右两边进行排序。 当初始序列整体或者局部有序时,快速排序的性能会下降,此时快速排序将退化为冒泡排序。(2)算法最好时间复杂度O(nlogn)(每次区间划分,基准关键字为待排序的记录中间值)原创 2014-08-31 15:54:28 · 661 阅读 · 0 评论 -
内排序算法小结
从以下几个方面来比较排序算法:1. 算法的时间和空间复杂度2. 排序的稳定性3. 算法结构的复杂度4. 参加排序的数据规模排序的稳定性:稳定排序方法: 插入排序、冒泡排序、二路归并排序、基数排序是稳定排序算法;不稳定排序方法: 选择排序、谢尔排序、快速排序、堆积排序是不稳定排序算法。算法复杂度比较:转载 2014-08-31 16:06:05 · 505 阅读 · 0 评论 -
简单选择排序
(1)基本原理:对于给定的一组记录,经过第一轮比较后得到最小的值,然后将该记录与第一个记录的位置进行交换;接着对不包括第一个记录以外的其他记录进行第二轮比较,得到最小记录并与第二个记录进行位置交换;重复该过程,直到进行比较的记录只有一个为止。(2)特点:交换移动的数据次数比较少。(3)算法时间复杂度:O(n^2)。辅助空间O(1)。(4)程序设计要点:嵌套循环,记录最小数和最小原创 2014-08-31 16:04:37 · 553 阅读 · 0 评论 -
c++模板类学习
1、模板的概念我们已经学过重载(Overloading),对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同。正确的调用重载函数。例如,为求两个数的最大值,我们定义MAX()函数需要对不同的数据类型分别定义不同重载(Overload)版本。//函数1.int max(int x,int y){ return(x>y)?x:y ; }//函数2.转载 2014-08-30 09:28:04 · 628 阅读 · 0 评论 -
关于“using namespace std”
对于一个存在着标准输入输出的C++控制台程序,一般会在#include 的下一行发现一句话,using namespace std。这句话其实就表示了所有的标准库函数都在标准命名空间std中进行了定义。其作用就在于避免发生重命名的问题。 1. 关于namespace C++引入了命名空间namespace主要解决了多个程序员在编写同一个项目中可能出现的函数等重名的现象。解决方法转载 2014-09-01 14:32:27 · 535 阅读 · 0 评论 -
顺时针打印矩阵与二维数组作为函数参数
1.顺时针#includevoid PrintMatrixInCircle(int (*data)[3],int rows,int columns,int start){ int endx=columns-start-1; int endy=rows-start-1; //从左到右打印一行 for(int i=start;i<=endx;++i) { int number=dat原创 2014-09-02 20:00:33 · 813 阅读 · 1 评论 -
指针作为函数参数传递时需要注意的问题
#include#include#includevoid GetMemory(char *p,int num){ p=(char*)malloc(num);}int main(){ char *str=NULL; GetMemory(&str,100); strcpy(str,"hello"); printf(str); return 0;}原创 2014-09-02 09:45:25 · 2864 阅读 · 1 评论 -
C++中return语句的用法
C++中的return语句是函数中一个重要的语句,return语句用于结束当前正在执行的函数,并将控制权返回给调用此函数的函数。return语句有两种形式:return;return expression;1、没有返回值的函数不带返回值的return语句只能用于返回类型为void的函数,return语句是为了引起函数的强制结束,这种用法类似于循环结构中的br转载 2014-08-29 20:47:56 · 899 阅读 · 0 评论 -
vector(C++)讲解
使用需要的头文件:#include vector:不是一种数据类型。 vector是一种数据类型。vector容器是一个模板类,可以存放任何类型的对象(但必须是同一类对象)。vector对象可以在运行时高效地添加元素,并且vector中元素是连续存储的。一、 定义和初始化templateexplicit vector(); // 默认构造函数,vector对象为空e转载 2014-08-28 22:17:31 · 561 阅读 · 0 评论 -
几款代码比较工具
优秀的代码比较工具BeyondCompare软件功能:用于比较和合并源代码Beyond Compare 是一款不可多得的专业级的文件夹和文件对比工具。使用他可以很方便的对比出两个文件夹或者文件的不同之处。并把相差的每一个字节用颜色加以表示,查看方便。并且支持多种规则对比。对软件汉化者来说,这绝对是一款不可多得的工具。该工具有Windows和Linux下两个版本T转载 2013-11-23 10:06:14 · 831 阅读 · 0 评论 -
ACM基本输入输出
在开始做ACM时,会面临一个输入输出数据的问题,ACM里的输入输出数据和平时的写程序不大一样。为什么会不一样呢,这就牵涉到评测系统怎么判断你提交的程序是正确的。实际上评测系统是把程序的标准输入输出数据都是放在文本文件里,你提交的程序会先经过编译,然后运行,从输入文件中读取数据,然后把结果输出到一个文本文件中,评测系统再把标准的输出文件和你提交的程序运行的结果的输出文件进行对比,从而判断你提交的程序转载 2014-04-27 15:10:30 · 615 阅读 · 0 评论 -
C++变量和对象的区别联系
对象和变量这两个概念莫要搞乱,颈是颈,椎是椎,虽然两者都对应着一块内存,但是从不同的角度去理解内存就会产生不同的意义。变量:所谓变量就是一种定义,通过定义编译器将会开辟一段空间,并将这段内存空间和这个变量的名字捆绑在一起。从这个意思去理解,其实说白了:变量名就是内存在代码中可视化的一个符号。也就是说,如int a,a只是内存中某段地址在代码中可视化的一个符号,a本身作为符号并不占用转载 2014-08-06 12:24:34 · 638 阅读 · 0 评论 -
用两个栈实现一个队列
两年前从网上看到一道面试题:用两个栈(Stack)实现一个队列(Queue)。觉得不错,就经常拿来面试,几年下来,做此题的应该有几十人了。通过对面试者的表现和反应,有一些统计和感受,在此做个小结。 用C++描述,题目大致是这样的: 已知下面Stack类及其3个方法Push、Pop和 Count,请用2个Stack实现Queue类的入队(Enqueue)出队(Dequeue)方法。转载 2014-09-04 20:22:14 · 513 阅读 · 0 评论 -
移位实现除法(除数不是2的幂次方)
#include #include int Division(int y,int x){ int sum=0; int i=0; while(y>x)//向左移位直到x>=y { x=x<<1; ++i;//记录左移的次数 } x=x>>1; //使x<=y --i; while(i >= 0) { if(y >= x) { sum += 1<<i原创 2014-09-06 09:08:36 · 1954 阅读 · 1 评论 -
如何计算C++中结构体的存储空间
#include "stdafx.h"#include struct A{int a;unsigned __int64 b;short c;}Test_a;struct B{int a;short c;unsigned __int64 b;}Test_b;struct C{short a;short b;s转载 2014-09-22 11:27:43 · 659 阅读 · 0 评论 -
C++ 虚函数表解析
C++ 虚函数表解析 陈皓http://blog.youkuaiyun.com/haoel 前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,R转载 2014-08-28 11:36:57 · 431 阅读 · 0 评论 -
类和结构的区别
目录:Ø 类和结构的示例比较Ø 类和结构的差别Ø 如何选择使用类还是使用结构 一 类和结构的示例比较结构示例: public struct Person { string Name; public int height; int weight; public bool overWe转载 2014-08-28 10:51:23 · 419 阅读 · 0 评论 -
C++ 继承
C++继承编辑本词条缺少信息栏,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧!通过继承机制,可以利用已有的数据类型来定义新的数据类型。所定义的新的数据类型不仅拥有新定义的成员,而且还同时拥有旧的成员。我们称已存在的用来派生新类的类为基类,又称为父类。由已存在的类派生出的新类称为派生类,又称为子类。目录▪ 定义1转载 2014-08-28 11:01:14 · 406 阅读 · 0 评论 -
C++中的引用
对于习惯使用C进行开发的朋友们,在看到c++中出现的&符号,可能会犯迷糊,因为在C语言中这个符号表示了取地址符,但是在C++中它却有着不同的用途,掌握C++的&符号,是提高代码执行效率和增强代码质量的一个很好的办法。在 c++学习提高篇(3)---隐式指针的文章中我详细介绍了在隐式指针&的用法,其实这两个概念是统一的。引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、转载 2014-08-28 20:01:15 · 453 阅读 · 0 评论 -
浅谈C++多态性
C++编程语言是一款应用广泛,支持多种程序设计的计算机编程语言。我们今天就会为大家详细介绍其中C++多态性的一些基本知识,以方便大家在学习过程中对此能够有一个充分的掌握。 多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念。多态(polymorphisn),字面意思多种形状。 C++多态性是通过虚函数来实现的,虚函数允许子类重新定转载 2014-08-28 11:26:55 · 392 阅读 · 0 评论 -
堆和栈的区别
堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态转载 2014-08-28 08:35:52 · 483 阅读 · 0 评论 -
各种排序方法对比(补充中)
重点从时间复杂度、空间复杂度、适用情况等多个方面进行综合比较。1.简单选择排序(1)基本原理:对于给定的一组记录,经过第一轮比较后得到最小的值,然后将该记录与第一个记录的位置进行交换;接着对不包括第一个记录以外的其他记录进行第二轮比较,得到最小记录并与第二个记录进行位置交换;重复该过程,直到进行比较的记录只有一个为止。(2)特点:交换移动的数据次数比较少。(3)算法时间复杂原创 2014-09-30 16:38:21 · 635 阅读 · 0 评论