
C++
文章平均质量分 73
csc_csc_csc
这个作者很懒,什么都没留下…
展开
-
C++之创建对象时的new与不new
C++在创建对象的时候可以采用两种方式:(例如类名为Test) Test test 或者 Test* pTest = new Test()。 这两种方法都可以实例化一个对象,但是这两种方法有很大的区别,区别在于对象内容所在的内存空间不同,众所周知,内存的分配方式有三种 (1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。原创 2011-11-28 16:38:23 · 22413 阅读 · 6 评论 -
寻找大富翁(Top k问题)
(1)寻找大富翁问题。题目描述: 浙江桐乡乌镇共有n个人,请找出该镇上的前m个大富翁.输入: 输入包含多组测试用例. 每个用例首先包含2个整数n(0 n和m同时为0时表示输入结束.输出: 请输出乌镇前m个大富翁的财产数,财产多的排前面,如果大富翁不足m个,则全部输出,每组输出占一行.这其实是一个Top原创 2012-10-13 00:31:55 · 2815 阅读 · 0 评论 -
二叉树遍历---已知前序遍历和中序遍历求其后序
(1)九度上一个关于二叉树遍历的问题。通过给定的前序遍历与中序遍历就可以确定二叉树的结构。题目描述: 二叉树的前序、中序、后序遍历的定义:前序遍历:对任一子树,先访问跟,然后遍历其左子树,最后遍历其右子树;中序遍历:对任一子树,先遍历其左子树,然后访问根,最后遍历其右子树;后序遍历:对任一子树,先遍历其左子树,然后遍历其右子树,最后访问根。给定一棵二叉树的前序遍历和原创 2012-10-17 10:30:04 · 9548 阅读 · 1 评论 -
有多少不同的面值组合
(1)题目要求题目描述:某人有8角的邮票5张,1元的邮票4张,1元8角的邮票6张,用这些邮票中的一张或若干张可以得到多少种不同的邮资?输入: 题目没有任何输入输出: 按题目的要求输出可以得到的不同邮资的数目(2)分析这个题目,可以将其归结为数组去重的问题。可以使用计数排序来实现。 题目中总共的面值为 8*5+10*4+原创 2012-10-16 17:50:37 · 2178 阅读 · 0 评论 -
数组中寻找第K小的数----位图法(bitmap)
(1)位图法 所谓bitmap,就是用每一位来存放某种状态,适用于大规模数据,但数据状态又不是很多的情况。通常是用来判断某个数据存不存在的(百度百科)。 例如:对{0, 1, 5,3, 7}进行排序,可以在计算机中使用8位表示这几个数,也就是使用一个字节空间可以完成排序。 数组中的数: 0 1 3原创 2012-10-15 19:25:13 · 3490 阅读 · 1 评论 -
搬水果 (贪心算法实现)
(1)题目描述: 在一个果园里,小明已经将所有的水果打了下来,并按水果的不同种类分成了若干堆,小明决定把所有的水果合成一堆。每一次合并,小明可以把两堆水果合并到一起,消耗的体力等于两堆水果的重量之和。当然经过 n‐1 次合并之后,就变成一堆了。小明在合并水果时总共消耗的体力等于每次合并所耗体力之和。 假定每个水果重量都为 1,并且已知水果的种类数和每种水果的数目,你的任务是原创 2012-11-01 23:17:38 · 3784 阅读 · 0 评论 -
检测是否为连通图(深度优先遍历算法)
(一)九度上一个练习题题目描述: 给定一个无向图和其中的所有边,判断这个图是否所有顶点都是连通的。输入: 每组数据的第一行是两个整数 n 和 m(0输出: 对于每组输入数据,如果所有顶点都是连通的,输出"YES",否则输出"NO"。样例输入: 4 31 22 33 23 21 22 30 0样例输出:原创 2012-11-04 22:19:04 · 14970 阅读 · 0 评论 -
Dijkstra算法实现
(1)Dijkstra算法解决了有向图上带权的单元最短路径问题,但是算法要求所有的权值必须是非负。算法的思想及其实现均参考《算法导论》一书。 Dijkstra算法的时间复杂度依赖于最小优先队列的具体实现,下述算法采用的是最小堆结构,时间复杂度为O((V+E)lgV)(2)算法实现:(简单案例测试成功,若存在问题请指出,多谢。)#include using原创 2012-11-26 21:06:10 · 3667 阅读 · 1 评论 -
Bellman—Ford算法实现(解决存在负边情况下单源最短路径问题)
(1)BellmanFord算法能够在存在负边权值的情况下,解决单源最短路径问题,其时间复杂度为O(VE)。 算法实验思想以及算法正确性分析主要参考《算法导论》中单源最短路径一章。 (2)代码中图的实现采用邻接表,图的节点编号从0开始计数。算法输入图的结构,输出从源点到各个节点的最短距离#include #include u原创 2012-11-26 17:00:29 · 2308 阅读 · 0 评论 -
Stable Matching Problem稳定匹配问题-----稳定婚姻算法
(一)问题的引出: 有N男N女,每个人都按照他对异性的喜欢程度排名。现在需要写出一个算法安排这N个男的、N个女的结婚,要求两个人的婚姻应该是稳定的。 何为稳定? 有两对夫妻M1 F2,M2 F1。M1心目中更喜欢F1,但是他和F2结婚了,M2心目中更喜欢F2,但是命运却让他和F1结婚了,显然这样的婚姻是不稳定的,随时都可原创 2012-12-13 16:15:52 · 39290 阅读 · 4 评论 -
哈夫曼树
(1)九度上的练习题,通过这个练习题把哈夫曼树复习一遍,并编码实现:题目描述: 哈夫曼树,第一行输入一个数n,表示叶结点的个数。需要用这些叶结点生成哈夫曼树,根据哈夫曼树的概念,这些结点有权值,即weight,题目需要输出所有结点的值与权值的乘积之和。输入: 输入有多组数据。每组第一行输入一个数n,接着输入n个叶节点(叶节点权值不超过100,2输出: 输出权原创 2013-01-08 20:22:11 · 1253 阅读 · 0 评论 -
Effective C++ 笔记4
本文内容基本来自于《Effective C++》一书,为学习后的笔记,以便温故。《Effective C++ 》第 4节 设计与声明(1)条款18:让接口容易被正确使用,不易被误用 好的接口很容易被正确使用,不容易被误用。 “促使正确使用”的办法包括接口的一致性,以及内置类型的行为兼容。 “阻止误用”的办法包原创 2012-05-24 09:39:01 · 743 阅读 · 0 评论 -
栈的压入压出(判断栈的压出顺序是否合法)
(1)问题描述题目描述:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。输入:每个测试案例包括3行:第一行为1个整数n(1第二行包含n个整数,表示栈的压原创 2013-02-18 23:25:00 · 6589 阅读 · 1 评论 -
二叉搜索树的后序遍历序列(判断后序遍历序列是否合法)
(1)题目描述题目描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。输入:每个测试案例包括2行:第一行为1个整数n(1第二行包含n个整数,表示这个数组,数组中的数的范围是[0,100000000]。输出:对应每个测试案例,如果输入数组是某二叉搜索树的后序遍历的结原创 2013-02-18 23:47:29 · 2516 阅读 · 2 评论 -
二叉树遍历(九度题)
(1)题目描述:编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。例如如下的先序遍历字符串:ABC##DE#G##F###其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。输入:输入包括1行字符串,长度不超过100。输出:可能有多组测试原创 2013-02-28 09:49:32 · 2148 阅读 · 0 评论 -
斐波那契数列
(1)题目描述:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。斐波那契数列的定义如下:输入:输入可能包含多个测试样例,对于每个测试案例,输入包括一个整数n(1输出:对应每个测试案例,输出第n项斐波那契数列的值。(2)这是九度上的一个题,要求时间限制1秒,整数的范围是大于0,小于70。如果是直接从n递归到原创 2013-02-28 09:39:34 · 2568 阅读 · 0 评论 -
区别pointers和references
C++中提供两种间接参考对象:pointers和references。pointers使用“*”和“->”操作符,references则使用“ . ”。但是什么时候使用哪种方式?通过学习《More Effective C++》的条款1学习总结了以下情况:(1)一个references必须总代表某个对象,不可能存在null references。所以当你使用一个变量,其目的是用来指向代表另外原创 2012-06-17 15:35:23 · 1414 阅读 · 0 评论 -
setjmp和longjmp
此文是学习 C专家编程 中的笔记。setjmp和longjmp是C语言所独有的,它们部分弥补了C语言有限的转移能力。函数说明(来自wiki百科):int setjmp(jmp_buf env)建立本地的jmp_buf缓冲区并且初始化,用于将来跳转回此处。这个子程序保存程序的调用环境于env参数所指的缓冲区,env将被longjmp使用。如果是从setjmp直接调用返原创 2012-05-20 11:14:40 · 6104 阅读 · 1 评论 -
Effective C++笔记6
本文内容基本来自于《Effective C++》一书,为学习后的笔记,以便温故。《Effective C++ 》第 6节 继承与面向对象设计(1)条款32:确定你的public继承塑模出is-a关系 public继承 意味is-a。适用于base classes身上的每一件事情一定也适用于derived classes身上,因为每一个derived cla原创 2012-05-30 21:26:25 · 844 阅读 · 0 评论 -
C++文件操作详解(ifstream、ofstream、fstream)
声明:本文系转载文章,转自 :http://apps.hi.baidu.com/share/detail/6366155,转载理由:对文件操作讲述的很详细,本人对文件操作比较生疏,故收藏并学习C++ 通过以下几个类支持文件的输入输出:ofstream: 写操作(输出)的文件类 (由ostream引申而来)ifstream: 读操作(输入)的文件类(由istream引申而来)fstrea转载 2011-12-02 14:38:58 · 1769 阅读 · 0 评论 -
C\C++ 获取当前路径
获取当前工作目录是使用函数:getcwd。cwd指的是“current working directory”,这样就好记忆了。函数说明: 函数原型:char* getcwd(char* buffer, int len); 参数:buffer是指将当前工作目录的绝对路径copy到buffer所指的内存空间, len是buffer的长度。 返回值:获取成功则返原创 2011-12-05 16:22:28 · 77121 阅读 · 5 评论 -
C++之sizeof与strlen区别
(一)sizeof 首先要明确的一点是:sizeof并不是一个函数,而是一个单目操作符。它的功能是以字节的形式给出其操作数的存储大小。 sizeof可以使用在数据类型上,例如:sizeof (int) 等,也可以用于变量:sizeof (变量name),也可以写成sizeof 变量name(不加括号),因为它是一个单目的操作符。不是函数。原创 2011-12-07 16:07:09 · 1334 阅读 · 0 评论 -
归并排序算法实现(C++)
归并操作(merge),也叫归并算法,指的是将两个已经排序的序列合并成一个序列的操作[1]。下面是百度百科上的一个例子: 如 设有数列{6,202,100,301,38,8,1} 初始状态: [6] [202] [100] [301] [38] [8] [1] 比较次数 i=1 [6 202 ] [ 100 301] [ 8 38] [ 1 ] 3 i=2 [原创 2012-03-26 11:03:27 · 1921 阅读 · 0 评论 -
快速排序算法实现(C++)
快速排序采用的是分治法,其平均时间复杂度为O(nlogn)一趟快速排序的算法是[1]: 1)设置两个变量I、J,排序开始的时候:I=0,J=N-1; 2)以第一个数组元素作为关键数据,赋值给key,即 key=A[0]; 3)从J开始向前搜索,即由后开始向前搜索(J=J-1即J--),找到第一个小于key的值A[j],A[j]与A[i]交换;原创 2012-03-26 22:34:10 · 26392 阅读 · 1 评论 -
C++使用template时报“有多个重载函数 与参数列表匹配”错误
今天在做《Essential C++》里面的练习题的时遇到的这个问题。先看代码,是一段很简单的代码:#include #include #include using namespace std;template inline T max(T x, T y){ return x > y ?x:y;}template inline T max(vector &x){原创 2012-03-12 20:25:00 · 12998 阅读 · 4 评论 -
Linux下C++使用TinyXML解析XML文件
最近的由于项目需要解析XML文件,偷懒在网上找了一下开源的解析XML的源码学习了一下。发现一个上手很快,简单的开源解析XML的项目TinyXML。TinyXML可以解析UTF-8编码格式的DOM标准的XML文件。他不能够解析DTDs (Document Type Definitions) or XSLs (eXtensible Stylesheet Language)。TinyXML主页:原创 2012-03-19 19:22:40 · 5868 阅读 · 2 评论 -
Linux下Eclipse集成SVN
Eclipse一般自带CVS,要想使Eclipse支持SVN,需要安装相应的插件。(1)首先下载插件Subclipse 下载路径为:http://www.easyeclipse.org/site/plugins/subclipse.html 下载完成后,将features和plugins文件夹中的内容分别拷入eclipse所在的对应的文件夹中。原创 2012-04-09 16:11:52 · 4411 阅读 · 0 评论 -
具有计数功能的智能指针
C++标准库中提供的auto_ptr智能指针是没有计数功能,它进行的是指针的移交。指针移交完成后,原来的“指针”就不复存在了。但是实际当中需要维护多个指针指向同一内存单元。这个时候需要另外一种智能指针来对指向该内存空间的指针进行维护。在boost库中提供了相应的智能指针。下面这段代码是在学习《C++标准程序库》中“动手实现Reference语义”中实现的计数型智能指针。template原创 2012-04-09 12:54:35 · 1023 阅读 · 0 评论 -
Linux下安装使用mysql connector(C++)
(1)使用C++版本的mysql connector首先需要安装和编译boost库。 可以在boost官网上下载源文件,自己进行编译。也可以直接使用命令下载和编译,具体命令为: apt-get install libboost-dev libboost-dbg libboost-doc bcp libboost-*(2)然后需要下载mysql connector的头文件原创 2012-04-17 10:07:54 · 16592 阅读 · 5 评论 -
Effective C++笔记 5
本文内容基本来自于《Effective C++》一书,为学习后的笔记,以便温故。《Effective C++ 》第 5 节 实现(1)条款26:尽可能延后变量定义式的出现时间(2)条款27:尽量少做转型动作 C++提供了四种新式的转型 A:const_cast通常被用来将对象的常量性转除。它也是唯一有此能力的C++ style转原创 2012-05-27 13:05:04 · 943 阅读 · 0 评论 -
Effective C++ 笔记1
本文内容基本来自于《Effective C++》一书,为学习后的笔记,以便温故。《Effective C++ 》第 1节 让自己习惯C++(1)条款01 视C++为一个语言联邦理解C++,必须认识其主要的次语言。共有四个:C,Object-Orented C++, Template C++, STL(2)条款02 尽量以const, enum, in原创 2012-05-10 14:11:03 · 1367 阅读 · 0 评论 -
Effective C++ 笔记2
本文内容基本来自于《Effective C++》一书,为学习后的笔记,以便温故。《Effective C++ 》第 2节 构造/析构/赋值运算符(1)条款05: 了解C++默默编写并调用哪些函数 C++编译器会为一个空类声明一个copy构造函数,一个copy assignment操作符和一个析构函数。此外,如果没有声明构造函数,编译器会为你声明一个defau原创 2012-05-10 21:40:45 · 1206 阅读 · 0 评论 -
Effective C++笔记 3
本文内容基本来自于《Effective C++》一书,为学习后的笔记,以便温故。《Effective C++ 》第 3节 资源管理(1)条款13:以对象管理资源 为防止资源泄漏,请使用RAII(Resource Acquisition Is Initialliztion资源取得时机便是初始化时机)对象,它们在构造函数中获得资源并在析构函数中释放资原创 2012-05-21 23:17:23 · 837 阅读 · 0 评论 -
基于Mysql Connector(C++)的数据库连接池的实现
<!--@page {margin:2cm}p {margin-bottom:0.21cm}-->基于MysqlConnector/C++的数据库连接池的实现1.连接池的介绍:1.1应用背景:一般的应用程序都会访问到数据库,在程序访问数据库的时候,每一次数据访问请求都必须经过下面几个步骤:建立数据库连接,打开数据库,对数据库中的数据进行操原创 2011-11-20 22:22:23 · 25921 阅读 · 13 评论 -
KMP算法实现
(1)KMP算法 KMP算法是一种字符串匹配算法。学习这种字符串匹配算法最好是以例子的形式理解其思想。推荐一个用图片说明算法过程的博客,浅显易懂: http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html(2)算法实现#in原创 2013-05-29 10:34:03 · 1711 阅读 · 0 评论