
C++
奔跑的蜗牛0510
这个作者很懒,什么都没留下…
展开
-
C++ vector容器类型
vector类为内置数组提供了一种替代表示,与string类一样 vector 类是随标准 C++引入的标准库的一部分,为了使用vector 我们必须包含相关的头文件 :#include 使用vector有两种不同的形式,即所谓的数组习惯和STL习惯。一、数组习惯用法1. 定义一个已知长度的 vector :vector ivec( 10 ); //类似数组定义int原创 2012-05-28 19:50:56 · 709 阅读 · 0 评论 -
构造函数与析构函数
派生类的构造函数应在初始化表里调用基类的构造函数;派生类和基类的析构函数应加Virtual关键字。不要小看构造函数和析构函数,其实编起来还是不容易。#include class Base{ public: virtual ~Base() { cout};class Derived : public Base原创 2012-05-30 11:49:49 · 439 阅读 · 0 评论 -
C/C++算法实例(二)--图论算法
1.最小生成树A.Prim算法:procedure prim(v0:integer);varlowcost,closest:array[1..maxn] of integer;i,j,k,min:integer;beginfor i:=1 to n do beginlowcost[i]:=cost[v0,i];closest[i]:=v0;end;原创 2012-05-31 18:01:24 · 2476 阅读 · 1 评论 -
C/C++算法实例(四)--排序算法
A.快速排序:procedure qsort(l,r:integer);var i,j,mid:integer;begini:=l;j:=r; mid:=a[(l+r) div 2]; {将当前序列在中间位置的数定义为中间数}repeatwhile a[i]在左半部分寻找比中间数大的数}while a[j]>mid do dec(j);{在右半部分寻找比中间数小原创 2012-05-31 18:14:02 · 615 阅读 · 0 评论 -
C/C++算法实例(一)--数论算法
学习C/C++还是不能停靠在文字的理解上,只有做题做题不断的做题才能有所提高,这是我学习C++是老师提供给我们的伪算法,下面希望初学者也能拿下来自己花时间算下,有不理解的,可以给我留言,相互交流!1.求两数的最大公约数function gcd(a,b:integer):integer;begin if b=0 then gcd:=aelse gcd:=gcd (b,a mod原创 2012-05-31 17:58:38 · 1696 阅读 · 1 评论 -
C/C++算法实例(三)--背包问题
*部分背包问题可有贪心法求解:计算Pi/Wi数据结构:w[i]:第i个背包的重量;p[i]:第i个背包的价值;1.0-1背包:每个背包只能使用一次或有限次(可转化为一次):A.求最多可放入的重量。NOIP2001 装箱问题有一个箱子容量为v(正整数,o≤v≤20000),同时有n个物品(o≤n≤30),每个物品有一个体积 (正整数)。要求从原创 2012-05-31 18:10:51 · 877 阅读 · 0 评论 -
C/C++算法实例(四)--排序算法
A.快速排序:procedure qsort(l,r:integer);var i,j,mid:integer;begini:=l;j:=r; mid:=a[(l+r) div 2]; {将当前序列在中间位置的数定义为中间数}repeatwhile a[i]在左半部分寻找比中间数大的数}while a[j]>mid do dec(j);{在右半部分寻找比中间数小原创 2012-05-31 18:13:18 · 149 阅读 · 0 评论 -
C/C++算法实例(五)--高精度计算
高精度数的定义:typehp=array[1..maxlen] of integer; 1.高精度加法procedure plus ( a,b:hp; var c:hp);var i,len:integer;beginfillchar(c,sizeof(c),0);if a[0]>b[0] then len:=a[0] else len:=b[0];原创 2012-05-31 18:15:28 · 959 阅读 · 0 评论 -
C/C++算法实例(六)--树的遍历
1.已知前序中序求后序procedure Solve(pre,mid:string);var i:integer;beginif (pre='''') or (mid='''') then exit;i:=pos(pre[1],mid);solve(copy(pre,2,i),copy(mid,1,i-1));solve(copy(pre,i+1,length(pr原创 2012-05-31 18:16:55 · 150 阅读 · 0 评论 -
C/C++算法实例(七)--其它
七进制转换1.任意正整数进制间的互化除n取余2.实数任意正整数进制间的互化乘n取整3.负数进制:设计一个程序,读入一个十进制数的基数和一个负进制数的基数,并将此十进制数转换为此负进制下的数:-R∈{-2,-3,-4,....-20}八全排列与组合的生成1.排列的生成:(1..n)procedure solve(dep:inte原创 2012-05-31 18:19:20 · 932 阅读 · 0 评论 -
C++异常处理
引言异常,让一个函数可以在发现自己无法处理的错误时抛出一个异常,希望它的调用者可以直接或者间接处理这个问题。而传统错误处理技术,检查到一个局部无法处理的问题时:1.终止程序(例如atol,atoi,输入NULL,会产生段错误,导致程序异常退出,如果没有core文件,找问题的人一定会发疯)2.返回一个表示错误的值(很多系统函数都是这样,例如malloc,内存不足,分配失败,返回NULL指原创 2012-06-11 16:15:19 · 782 阅读 · 0 评论 -
C++中的类模板详细讲述
一、类模板定义及实例化1. 定义一个类模板:1 templateclass 模板参数表>2 3 class 类名{4 5 // 类定义......6 7 }; 其中,template 是声明类模板的关键字,表示声明一个模板,模板参数可以是一个,也可以是多个,可以是类型参数 ,也可以是非类型参数。类型参数由关键字class或typename及其后面的标识符原创 2012-06-11 16:18:51 · 1425 阅读 · 1 评论 -
static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
1) 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中原创 2012-07-04 17:37:40 · 1398 阅读 · 1 评论 -
析构函数和虚函数的用法和作用?
析构函数也是特殊的类成员函数,它没有返回类型,没有参数,不能随意调用,也没有重载。只是在类对象生命期结束的时候,由系统自动调用释放在构造函数中分配的资源。这种在运行时,能依据其类型确认调用那个函数的能力称为多态性,或称迟后联编。另: 析构函数一般在对象撤消前做收尾工作,比如回收内存等工作,虚拟函数的功能是使子类可以用同名的函数对父类函数进行覆盖,并且在调用时自动调用子类覆盖函数,如果是纯虚函数原创 2012-07-05 00:01:45 · 3663 阅读 · 1 评论 -
虚基类
一:虚基类的作用 当一个类的部分或者全部基类来自另一个共同的基类时,这些直接从一级共同基类继承来的成员就拥有相同的名称,这样就可能出现派生的二义性;且在派生类对象中,这些同名成员在内存中同时拥有多个拷贝,可以使用作用域分辨符来唯一标识并分别访问他们,也可以将共同基类设置成为虚基类,这时从不同路径继承过来的该类成员在内存中就只有一个拷贝,这样就解决了唯一标识问题。二:虚基类原创 2012-06-28 15:10:25 · 4020 阅读 · 1 评论 -
内联函数与宏定义详解
(1) 什么是内联函数?内联函数是指那些定义在类体内的成员函数,即该函数的函数体放在类体内。(2)为什么要引入内联函数?当然,引入内联函数的主要目的是:解决程序中函数调用的效率问题。另外,前面我们讲到了宏,里面有这么一个例子:#define ABS(x) ((x)>0? (x):-(x))当++i出现时,宏就会歪曲我们的意思,换句话说就是:宏的定义很容易产生二意原创 2012-05-31 07:42:32 · 945 阅读 · 0 评论 -
50个c/c++ 源代码网站
C/C++是最主要的编程语言。这里列出了50名优秀网站和网页清单,这些网站提供c/c++源代码。这份清单提供了源代码的链接以及它们的小说明。我已尽力包括最佳的C/C++源代码的网站。这不是一个完整的清单,您有建议可以联系我,我将欢迎您的建议,以进一步加强这方面的清单。 1、http://snippets.dzone.com/tag/c/ --数以千计的有用的C语言源代码片段 2、ht原创 2012-05-30 13:36:51 · 828 阅读 · 0 评论 -
【C++】析构函数和virtual函数引发的隐晦问题 ——《Effective C++》
用工厂模式的时候,我们常常将一个基类指针指向子类对象,以此来实现多态。但是,当调用delete析构这个基类指针的话,就有一个潜藏的危机:当子类对象经由一个基类指针被删除,而该基类带着一个非virtual析构函数,其结果是不能预料的——实际执行时通常发生的是对象的子类成分没有被销毁!消除这个问题的做法很简单:给基类一个virtual析构函数。如果一个类不含有virtual函数,通常表示它原创 2012-05-28 14:50:14 · 481 阅读 · 0 评论 -
重载,覆盖,隐藏 (写的特别清楚)
重载(overload)、覆盖(override)、隐藏(hide)的区别 谈谈重载(overload)覆盖(override)与隐藏 转自http://blog.youkuaiyun.com/yanjun_1982/archive/2005/09/02/470405.aspx 这三个概念都是与OO中的多态有关系的。如果单是区别重载与覆盖这两个概念是比较容易的,但是隐藏这一原创 2012-05-28 14:53:15 · 443 阅读 · 0 评论 -
c++中new和delete的使用方法
new和delete运算符用于动态分配和撤销内存的运算符new用法: 1. 开辟单变量地址空间 1)new int; //开辟一个存放数组的存储空间,返回一个指向该存储空间的地址.int *a = new int 即为将一个int类型的地址赋值给整型指针a. 2)int *a = new int(原创 2012-05-28 19:49:12 · 537 阅读 · 0 评论 -
灵巧指针与内存回收
在JAVA 和 C# 中都有垃圾回收功能,程序员在分配一段内存后可以不再理会,而由垃圾回收自动回收,从而使程序员从复杂的内存管理中解脱出来。这是JAVA 和 C#的一大优点。而C++程序员在用 new 分配了一段内存后,还必须用 delete 释放,否则将造成资源泄漏。因此,一些C++ 书上经常告诫程序员:要养成好的习惯,new 与 delete 要成对出现,时刻记住将内存释放回系统。但是,事情只原创 2012-05-29 10:26:06 · 547 阅读 · 0 评论 -
标准C语言头文件
ISO C标准定义的头文件(24项) 验证程序断言 支持复数算术运算 字符类型 出错码 浮点环境 浮点常量 整型格式转换 替代关系操作符宏 实现常量 局部类别 数学常量 非局部goto 信号原创 2012-05-29 10:28:30 · 2547 阅读 · 3 评论 -
C++中你必须知道的23种算法
1.河内之塔说明河内之塔(Towers of Hanoi)是法国人M.Claus(Lucas)于1883年从泰国带至法国的,河内为越战时北越的首都,即现在的胡志明市;1883年法国数学家Edouard Lucas曾提及这个故事,据说创世纪时Benares有一座波罗教塔,是由三支钻石棒(Pag)所支撑,开始时神在第一根棒上放置64个由上至下依由小至大排列的金盘(Disc),并命令原创 2012-05-29 10:31:54 · 21191 阅读 · 1 评论 -
C++的特性
C++新增加有重载(overload),内联(inline),Const,Virtual四种机制重载和内联:即可用于全局函数,也可用于类的成员函数;Const和Virtual:只可用于类的成员函数;重载:在同一类中,函数名相同的函数。由不同的参数决定调用那个函数。函数可要不可要Virtual关键字。和全局函数同名的函数不叫重载。如果在类中调用同名的全局函数,必须用全局引用符原创 2012-05-30 11:27:17 · 436 阅读 · 0 评论 -
C/C++常见问题
一、#include “filename.h”和#include 的区别 #include “filename.h”是指编译器将从当前工作目录上开始查找此文件 #include 是指编译器将从标准库目录中开始查找此文件 二、头文件的作用 加强安全检测 通过头文件可能方便地调用库功能,而不必关心其实原创 2012-05-30 11:42:38 · 952 阅读 · 2 评论 -
指针详解
第一章。指针的概念 指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。 要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让 我们分别说明。 先声明几个指针放着做例子: 例一: (1)int*ptr; (2)char*ptr; (3)int**ptr; (4)in原创 2012-05-30 12:03:44 · 519 阅读 · 0 评论 -
C/C++ 的文件读写操作总结(一)
在编程的过程中,文件的操作是一个经常用到的问题,在C++Builder中,可以使用多种方法对文件操作,下面我就按以下几个部分对此作详细介绍,就是: 1、基于C的文件操作; 2、基于C++的文件操作; 3、基于WINAPI的文件操作; 4、基于BCB库的文件操作; 5、特殊文件的操作。 1.基于C的文件操作 在ANSI C中,对文件的操作分为两种方式,即原创 2012-05-30 13:29:13 · 2279 阅读 · 1 评论 -
C/C++ 的文件读写操作总结(二) .
2.基于C++的文件操作 在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符: 1、插入器( 向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout就表示把字符串"Write Stdout"和换行字符('/n')输出到标准输原创 2012-05-30 13:30:53 · 1958 阅读 · 1 评论 -
详细分析:引用和指针的区别
引用和指针三大区别: 1.引用必须初始化,指针不必. 2.引用初始化后不能被改变,指针可以改变所指的变量. 3.不存在指向空值的引用,但是存在指向空值的指针. c++中的引用与指针的区别 ★相同点: 1.都是地址的概念; 指针指向一块内存,它的内容是所指内存的地址;引用是某块内存的别名。 ★区别:原创 2012-05-31 07:43:52 · 845 阅读 · 0 评论 -
C++中引用概念
前段时间在学习C++,学习到了引用的概念,当时也查了好多的资料,网上也有很多关于引用的帖子,多是引用和指针的关系,谭浩强C++中对引用的介绍也不是很多,今天把它们整理出来,相信也会对大家有所帮助,关于C++中其它的一些概念我也会持续更新中,大家可以多多关注下我的博客! 1、什么是“引用”?申明和使用“引用”要注意哪些问题?答:引用就是某原创 2012-05-30 11:18:39 · 2233 阅读 · 1 评论 -
在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?
首先,作为extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。通常,在模块的头文件中对本模块提供给其它模块引用的函数和全局变量以关键字extern声明。例如,如果模块B欲引用该模块A中定义的全局变量和函数时只需包含模块A的头文件即可。这样,模块B中调用模块A中的函数时,在编译阶段,模块B虽然找不到该原创 2012-05-30 11:23:28 · 786 阅读 · 1 评论 -
详解C++中的Boost智能指针
内存管理是一个比较繁琐的问题,C++中有两个实现方案: 垃圾回收机制和智能指针。垃圾回收机制因为性能等原因不被C++的大佬们推崇, 而智能指针被认为是解决C++内存问题的最优方案。1. 定义一个智能指针就是一个C++的对象, 这对象的行为像一个指针,但是它却可以在其不需要的时候自动删除。注意这个“其不需要的时候”, 这可不是一个精确的定义。这个不需要的时候可以指好多方面:局部变量退原创 2012-12-24 12:12:48 · 699 阅读 · 0 评论