c++
文章平均质量分 53
bay1ts
这个作者很懒,什么都没留下…
展开
-
海量数据处理算法—Bit-Map
1. Bit Map算法简介 来自于《编程珠玑》。所谓的Bit-map就是用一个bit位来标记某个元素对应的Value, 而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。2、 Bit Map的基本思想 我们先来看一个具体的例子,假设我们要对0-7内的5个元素(4,7,2,5,3)排序(这转载 2014-08-11 21:30:13 · 564 阅读 · 0 评论 -
经典分享 C++内存管理详解
C++内存管理。程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本文的内容比一般教科书的要深入得多,读者需细心阅读,做到真正地通晓内存管理。1、内存分配方式内存分配方式有三种:(1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,stat转载 2014-05-17 14:21:57 · 506 阅读 · 0 评论 -
Windows下如何编译使用boost?
注:本文系转载,因为原文域名被csdn屏蔽。所以如需原文请自行谷歌标题。谢谢。最近在看boost::asio的东西,所以必须要用到boost库,下载了一个,所以与大家分享下boost库的编译方法。本方法应该适用于boost的任何版本,应该适用于任何C++编译器(VC6.0可能对某些库不支持,因为模板的原因),因为Linux没怎么用,所以只是分享下windows上的编译方法。转载 2014-05-11 11:14:08 · 757 阅读 · 0 评论 -
Windows下如何编译使用boost?
简介: 在c++中是没有正则表达式的,要想在c++中使用正则表达式,必须安装boost库,(目前,boost库还不是c++的标准库,相信在不久的将来,boost能和STL一样成为c++的标准,为万人造福) 一、boost库的下载 下载地址如下:http://sourceforge.net/projects/boost/files/boost/1.42.0/转载 2014-05-11 11:04:56 · 619 阅读 · 0 评论 -
梦中的婚礼 c++--beep()
#define NOTE_1 440#define NOTE_2 495#define NOTE_3 550#define NOTE_4 587#define NOTE_5 660#define NOTE_6 733#define NOTE_7 825#define NOTE_NONE Sleep(ONE_BEEP);#include "windows.h"in原创 2014-04-10 11:14:41 · 1273 阅读 · 0 评论 -
关于typedef的用法总结
不管实在C还是C++代码中,typedef这个词都不少见,当然出现频率较高的还是在C代码中。typedef与#define有些相似,但更多的是不同,特别是在一些复杂的用法上,就完全不同了,看了网上一些C/C++的学习者的博客,其中有一篇关于typedef的总结还是很不错,由于总结的很好,我就不加修改的引用过来了,以下是引用的内容(红色部分是我自己写的内容)。用途一:定义一种类型的别原创 2014-05-10 11:44:09 · 445 阅读 · 0 评论 -
关于淘汰85%面试者的百度开发者面试题
题目描述:依序遍历0到100闭区间内所有的正整数,如果该数字能被3整除,则输出该数字及‘*’标记;如果该数字能被5整除,则输出该数字及‘#’标记;如果该数字既能被3整除又能被5整除,则输出该数字及‘*#’标记。忘了第一次从哪看见的了,刚才在 王奎MarkSaas博客里看见有人在讨论这个面试题。见到不少好的解题方法,记录下来。我的解法:原创 2014-05-16 21:47:24 · 688 阅读 · 0 评论 -
malloc/free与new/delete的区别
转载自:http://blog.csdn.net/hackbuteer1/article/details/6789164相同点:都可用于申请动态内存和释放内存不同点:(1)操作对象有所不同。malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符。对于非内部数据类的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同转载 2014-05-16 20:53:38 · 512 阅读 · 0 评论 -
vs2010下面的ACE库安装配置详解
Win7 vs2010 ACE.zip1. 获取ACE.zip下载地址:http://download.dre.vanderbilt.edu/2. 设置环境变量创建系统环境变量3. 编译ACE,生成dllACE_ROOT\ace目录下新建config.h文件,文件内容: // config.h #defin转载 2014-04-24 20:32:40 · 997 阅读 · 0 评论 -
stl容器学习总结
stl容器学习总结一 迭代器(iterator)迭代器:迭代器是类似指针的对象,STL算法利用它们对存储在容器中的对象序列进行遍历。5种类别:1、输入迭代器 2、输出迭代器 3、前向迭代器 4、双向迭代器 5、随机访问迭代器 常用的迭代器: istre转载 2014-05-10 15:08:36 · 450 阅读 · 0 评论 -
二维数组和指针
二维数组和指针⑴ 用指针表示二维数组元素。要用指针处理二维数组,首先要解决从存储的角度对二维数组的认识问题。我们知道,一个二维数组在计算机中存储时,是按照先行后列的顺序依次存储的,当把每一行看作一个整体,即视为一个大的数组元素时,这个存储的二维数组也就变成了一个一维数组了。而每个大数组元素对应二维数组的一行,我们就称之为行数组元素,显然每个行数组元素都是一个一维数组下面我们讨论指针转载 2014-05-18 15:17:48 · 533 阅读 · 0 评论 -
c++ part3
在一个base类中,访问标号原创 2014-04-27 23:01:17 · 527 阅读 · 0 评论 -
C++链表实现
总结了一下最近学的东西,比如模板,链表。写的原创 2014-05-20 18:10:18 · 507 阅读 · 0 评论 -
C++函数的返回引用
一、函数返回分以下几种情况:(1)主函数main的返回值:这里提及一点,返回0表示程序运行成功。(2)返回非引用类型:函数的返回值用于初始化在跳用函数出创建的临时对象。用函数返回值初始化临时对象与用实参初始化形参的方法是一样 的。如果返回类型不是引用,在调用函数的地方会将函数返回值复制给临时对象。且其返回值既可以是局部对象,也可以是求解表达式的结果。(3)返回引用:当函数返转载 2014-08-11 21:55:46 · 542 阅读 · 0 评论 -
C++里如何读写xls文件
文章转载自:http://blog.sina.com.cn/s/blog_6a6d5ba80100umhm.html具体如何使用可见“针对Excel表格文件操作的编程实现”于http://www.vckbase.com/document/viewdoc/?id=693只是下载的代码里有内存泄露现象。需要在个别地方加入e->Delete();//下面的代码是已经更正过的。转载 2014-08-05 11:30:22 · 3573 阅读 · 0 评论 -
彻底了解指针数组,数组指针,以及函数指针,以及堆中的分配规则
对象的堆内存分配,指针数组和数组指针有关内存的说明 ! 一:关于指针和堆的内存分配先来介绍一下指针 :指针一种类型,理论上来说它包含其他变量的地址,因此有的书上也叫它:地址变量。既然指针是一个类型,是类型就有大小,在达内的服务器上或者普通的PC机上,都是4个字节大小,里边只是存储了一个变量的地址而已。不管什么类型的指针,char * ,int * ,int (*转载 2014-05-31 15:07:03 · 593 阅读 · 0 评论 -
二维数组的指针 != 指针的指针
以前一直以为,二维数组的数组名就是一个指针的指针,直到今天一位同学问我一个相关的问题,我才醒悟。#include int main(){ int **p = new int[2][3]; return 0;}这段代码是编译不通过的,提示“无法从“int (*)[3]”转换为“int **”。虽然二维数组可以看成是一个平面结构(如下)a[0][0]转载 2014-05-31 14:33:33 · 564 阅读 · 0 评论 -
字符串匹配的KMP算法
1.kmp算法的原理: 本部分内容转自:http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html 字符串匹配是计算机的基本任务之一。举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"A转载 2014-05-30 15:52:19 · 569 阅读 · 0 评论 -
内存的堆分配和栈分配 & 字符数组,字符指针,Sizeof总结
文章转载自:http://blog.csdn.net/SomnusLee1988/article/details/17251049堆和栈的区别一个由C/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程转载 2014-05-31 15:13:43 · 641 阅读 · 0 评论 -
百度之星初赛第二轮第一题超时代码(可能还有错误)
百度之星初赛第二轮的第一题,题目如下原创 2014-05-25 16:57:57 · 716 阅读 · 0 评论 -
C++实现链式栈
这次也是瞎写着玩的,用的模板原创 2014-05-22 22:01:31 · 699 阅读 · 0 评论 -
另类编辑距离 未通过代码
#include #include #include #include using namespace std;int main(){ vector vec1, vec2; vector ans; string str1 = " "; string str2 = " "; char ch1; int result = 0; while (cin >> str1 >>原创 2014-04-29 01:21:46 · 755 阅读 · 0 评论 -
STL算法学习
STL算法学习,小结如下:前提:下载stl源码: http://www.sgi.com/tech/stl/download.html打开网页: http://www.sgi.com/tech/stl/stl_index.html一 函数对象: 因为很多的算法中多使用了函数对象二元函数对象,V1和V2为输入,V3为结果plus: t转载 2014-05-10 15:07:20 · 508 阅读 · 0 评论 -
61条面向对象的设计原则
你不必严格遵守这些原则,违背它们也不会被处以宗教刑罚。但你应当把这些原则看成警铃,若违背了其中的一条,那么警铃就会响起。 -----Arthur J.Riel (1)所有数据都应该隐藏在所在的类的内部。p13 (2)类的使用者必须依赖类的共有接口,但类不能依赖它的使用者。p15 (3)尽量减少类的协议中的消息。p16 (4)实现所有类都理解的最基本公有接口[例如,拷贝操作(深拷贝和浅拷贝转载 2014-05-10 14:48:37 · 439 阅读 · 0 评论 -
C++中数组参数详解
在C++中,数组永远不会按值传递。它是传递第一个元素(准确地说是第0个)的指针。例如,如下声明: void putValues(int[10]);被编译器视为: void putValues(int*);数组的长度与参数声明无关。因此,下列三个声明是等价的: void putValues(int*); void putValues(int[]); void转载 2014-04-15 20:02:42 · 436 阅读 · 0 评论 -
c++笔记2
构造函数构造函数无返回值,不是void类型。名字与类型名相同,允许重载。构造一个函数,可以通过构造函数初始化列表:以冒号开始,后面是以逗号分隔的数据成员列表,每个数据成员后面有括号,括号内为初始化式。另一种方式,省略初始化列表,在构造函数函数体内对数据成员赋值。构造函数的执行分为两个阶段,初始化阶段和计算阶段。一般来说,两种方式效果基本相同。但是有些成员必须在初始化列表中初始化。例如没原创 2014-03-30 21:34:22 · 512 阅读 · 0 评论 -
const成员函数
注:本篇转载自 http://www.cnblogs.com/zhengyuhong/articles/2299713.html看到const 关键字,C++程序员首先想到的可能是const 常量。这可不是良好的条件反射。如果只知道用const 定义常量,那么相当于把火药仅用于制作鞭炮。const 更大的魅力是它可以修饰函数的参数、返回值,甚至函数的定义体。const 是cons转载 2014-03-29 16:54:02 · 419 阅读 · 0 评论 -
C++ part 4
转换与继承基类类型对象可以作为独立对象存在,也可以作为派生类对象一部分存在。所以,基类对象,可以是,也可以不是一个派生类对象的一部分。所以没有从基类引用/指针到派生类引用/指针的自动转换。派生类到基类的转换如果有一个派生类对象,可以使用它的地址对基类类型的指针进行赋值或初始化。对于引用类型同样适用。这个过程没有对对象的类型转换。而且可以使用派生类型对象对基类型对象赋值或初始化。可以原创 2014-04-29 20:33:27 · 542 阅读 · 0 评论 -
c++ RTTI(运行时类型识别)
通过RTTI,能够通过基类的指针或引用来检索其所指对象的实际类型。c++通过下面两个操作符提供RTTI。(1)typeid:返回指针或引用所指对象的实际类型。(2)dynamic_cast:将基类类型的指针或引用安全的转换为派生类型的指针或引用。对于带虚函数的类,在运行时执行RTTI操作符,返回动态类型信息;对于其他类型,在编译时执行RTTI,返回静态类型信息。当具转载 2014-04-29 20:54:08 · 430 阅读 · 0 评论 -
C++虚函数和纯虚函数的区别
1.虚函数和纯虚函数可以定义在同一个类中,含有纯虚函数的类被称为抽象类,而只含有虚函数的类不能被称为抽象类。2.虚函数可以被直接使用,也可以被子类重载以后,以多态的形式调用,而纯虚函数必须在子类中实现该函数才可以使用,因为纯虚函数在基类有声明而没有定义。3.虚函数和纯虚函数都可以在子类中被重载,以多态的形式被调用。4.虚函数和纯虚函数通常存在于抽象基类之中,被继承的子类重载原创 2014-04-29 17:30:43 · 497 阅读 · 0 评论 -
传值&传引用&传指针
相关概念c++三种传递参数方式传参数的值(称值传递,简称传值),传参数的地址(称地址传递,简称为传址),和引用传递(称为传引用),相应的函数传值调用,传址调用和传引用调用形参、实参 函数定义时参数表中的参数称为形式参数,简称形参;函数调用时参数表中的参数称为实际参数,简称实参。实参和形参之间的数据传递称为形实结合转载 2014-04-29 17:29:01 · 854 阅读 · 0 评论 -
c++ 笔记 part1
this指针用于非静态成员函数内部,指定所属成员。返回该类型的引用,可以return *this;const成员函数任何不修改数据成员的成员函数都应该声明为const类型。Const对象只能访问const成员函数,非const对象可以访问const成员函数或非const成员函数。Const成员函数可以调用const成员函数。非const成员函数可以调用非/const成员函数。原创 2014-03-29 16:26:36 · 478 阅读 · 0 评论 -
C++类构造函数初始化列表
构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式。例如:class CExample {public: int a; float b; //构造函数初始化列表 CExample(): a(0),b(8.8) {} //构造函数内部赋值 CExample() {转载 2014-03-30 11:27:34 · 429 阅读 · 0 评论 -
socket 例子
开发环境 Vs 2008 新建一个 win32 console project// 服务器端代码// Server.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include "winsock2.h"#pragma comment(lib, "ws2_32.l原创 2014-04-20 17:40:40 · 456 阅读 · 0 评论 -
socket 例子2
转载自:http://www.cppblog.com/jerryma/archive/2011/04/06/143501.htmlsockets(套接字)编程有三种,流式套接字(SOCK_STREAM),数据报套接字(SOCK_DGRAM),原始套接字(SOCK_RAW); 基于TCP的socket编程是采用的流式套接字(SOCK_STREAM)。基于UDP采用的数据报套接字(SOCK_D转载 2014-04-20 17:42:33 · 491 阅读 · 0 评论 -
c++ part 5
构造函数和赋值控制构造函数和赋值控制成员不能继承。每个类都需要定义自己的这些成员。派生类构造函数除了初始化自己的数据成员,还要初始化基类。基类部分由基类的构造函数初始化。顺序:对于派生类对象的构造,会先执行其基类的构造函数,再构造自身另一部分。析构顺序相反。如果派生类继承自多个基类,基类的构造顺序应该为基类的定义顺序,而不是继承声明顺序。这点只是个人猜测,我没有试验。请不要作为参考。原创 2014-05-08 21:31:03 · 525 阅读 · 0 评论 -
C++中虚函数工作原理和(虚)继承类的内存占用大小计算
转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/7883531一、虚函数的工作原理 虚函数的实现要求对象携带额外的信息,这些信息用于在运行时确定该对象应该调用哪一个虚函数。典型情况下,这一信息具有一种被称为 vptr(virtual table pointer,虚函数表指针)的指针的形式。vptr 指向一转载 2014-05-10 11:20:09 · 480 阅读 · 0 评论 -
堆栈,堆栈,堆和栈的区别
堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态转载 2014-05-10 14:04:40 · 519 阅读 · 0 评论 -
用GDB调试程序
文章转载自:用GDB调试程序GDB概述————GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。一般来说,GDB主要帮忙你完成下面四个方面转载 2014-05-17 00:10:30 · 556 阅读 · 0 评论 -
如何学好C++,用好类库是关键
如果你有一定的C基础可能学起来比较容易些,但是学习C++的过程中又要尽量避免去使用一些C中的思想;平时还要多看一些高手写的代码,遇到问题多多思考,怎样才能把问题抽象化,以使自己头脑中有类的概念;最后别忘了经常上机自己调调程序,这是谁也代替不了的.C++类库介绍再次体现了C++保持核心语言的效率同时大力发展应用库的发展趋势!!在C++中,库的地位是非常高的。C++之父 Bjarn转载 2014-04-24 20:18:32 · 495 阅读 · 0 评论