c++
文章平均质量分 78
行走江湖
方向:分布式计算、实时流计算、数据挖掘、后台开发、NoSQL、Hadoop/HBase、Unix/Linux、Java、C/C++、Python。
联系方式:http://t.qq.com/X-L2008
QQ:394102339
展开
-
C/C++编译器中虚表是如何完成的 The virtual table
<br />To implement virtual functions, C++ uses a special form of late binding known as the virtual table. The virtual table is a lookup table of functions used to resolve function calls in a dynamic/late binding manner. The virtual table sometimes goes by转载 2010-09-13 20:37:00 · 3600 阅读 · 0 评论 -
观察者(发布-订阅)模式浅析
观察者模式(又名发布-订阅模式)主要使用场景:当一个对象的状态发生改变时,所有依赖它的对象都得到通知,并被自动更新.目标对象类:class Subject{public:~Subject(){}virtual void Attach(Observer*);//增加一个观察者(即订阅)virtual void Detach(Observer*);/原创 2013-11-17 13:43:44 · 684 阅读 · 0 评论 -
Linux 平台相关代码的 C++ 解决方案
Linux 平台相关代码带来的问题目前市场上存在着许多不同的 Linux 平台(例如:RedHat, Ubuntu, Suse 等),各大厂商和社区都在针对自己支持的平台进行优化,为使用者带来诸多方便的同时也对软件研发人员在进行编码时带来不少问题:由于程序中不可避免的存在平台相关代码(系统调用等),软件研发人员为了保证自己的产品在各个 Linux 平台上运行顺畅,一般都需要在源转载 2012-06-15 11:50:33 · 884 阅读 · 0 评论 -
VS 内存泄漏检测
方法:stdafx.h里面加入:#define _CRTDBG_MAP_ALLOC #include #include_CRTDBG_MAP_ALLOC 定义一定要加上,带上它可以让你明确的看到是哪个文件哪一行出现内存泄漏;然后在工程的每个cpp文件的#include 部分之后加上:#ifdef _DEBUG #define new DEBUG_NEW #end转载 2012-05-19 17:48:40 · 741 阅读 · 0 评论 -
C++内存管理之一(检测内存泄露)
C++程序的复杂性很大一部分在于他的内存管理,没有C#那样的垃圾回收机制,内存管理对初学者来说很困难。经常会出现内存泄露的情况。那么我们写程序如何避免内存泄露呢?首先我们需要知道程序有没有内存泄露,然后定位到底是哪行代码出现内存泄露了,这样才能将其修复。本文描述了如何检测内存泄露。最主要的是纯C,C++的程序如何检测内存泄露。现在有很多专业的检测工具,比如比较有名的BoundsCheck,转载 2012-05-19 17:33:16 · 393 阅读 · 0 评论 -
C++ 内存池 -- C++ Memory Pool
这是我翻译的文章,来自 Code Project,原文作者: DanDanger2000. 原文链接: http://www.codeproject.com/cpp/MemoryPool.aspC++ 内存池l 下载示例工程 – 105Kbl 下载源代码 – 17.3Kb目录l 引言l 它怎样工作转载 2011-12-12 20:30:42 · 437 阅读 · 0 评论 -
vector中使用erase删除元素
很容易受数组的影响,写出如下代码:std::vecotr::iterator it = vc.begin();for( ; it != vc.end(); it++ ){ if( ***** ) vc.erase(it);}原因是vector中在删除一个元素后,迭代器会自动指向下一个元素。所以,上面的代码很可能导致迭代器越界。《The C++ Stand转载 2011-11-11 14:20:22 · 939 阅读 · 0 评论 -
C/C++中int/long/float/double数值类型与字符串互相转换[总结]
memcpy方法可以实现将int等保存到字符类型的数组中。示例:long long_data=-9828; unsigned char data[4];memcpy(data,&t,4); //将long类型的数据用4个char保存。long my_long_data=0;memcpy(&tt转载 2011-10-31 11:19:25 · 813 阅读 · 0 评论 -
使用random_shuffle()算法随机化序列元素
假设你需要指定范围内的随机数,传统的方法是使用ANSI C的函数random(),然后格式化结果以便结果是落在指定的范围内。但是,使用这个方法至少有两个缺点。首先,做格式化时,结果常常是扭曲的,所以得不到正确的随机数(如某些数的出现频率要高于其它数) 。其次,random()只支转载 2011-09-26 16:35:56 · 443 阅读 · 0 评论 -
STL—vector删除重复元素
STL提供了很多实用的算法,这里主要讲解sort和unique算法。 删除重复元素,首先将vector排序。sort( vecSrc.begin(), vecSrc.end() ); 然后使用unique算法。 vecSrc.erase( unique(转载 2011-09-13 15:45:56 · 643 阅读 · 0 评论 -
【C++】 STL vector list deque
1 vector 向量 相当于一个数组 在内存中分配一块连续的内存空间进行存储。支持不指定vector大小的存储。STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capacituy()函数返回的大小,当超过此分配的空间时再整体重新放分配一块内存存储,这给人以vector可以不指定vector即一个连续内存的大小的感觉。通常此默认的内存分配能完成大部分情况下的存储。 优点:(1) 不指定一块内存大小的数组的连续存储,即可以像数组一样操作,但可以对此数组转载 2010-11-11 10:26:00 · 530 阅读 · 0 评论 -
STL线程安全的解决方法
<br />Multithreading Issues<br />STL is not thread protected, so you must provide locks on your collections if<br />they will be used in multithreaded environment. <br />The standard locking mechanisms of Mutexes, Semaphores and Critical Sections can be us转载 2010-12-22 11:54:00 · 530 阅读 · 0 评论 -
对面向对象设计原则的总结
正如牛顿三大定律在经典力学中的位置一样,“开-闭”原则(Open-Closed Principle)是面向对象的可复用设计(Object Oriented Design或OOD)的基石。其他设计原则(里氏代换原则、依赖倒转原则、合成/聚合复用原则、迪米特法则、接口隔离原则)是实现“开-闭”原则的手段和工具。 一、“开-闭”原则(Open-Closed Principle,OCP) 1.1“开-闭”原则的定义及优点1)定义:一个软件实体应当对扩展开放,对修改关闭( Software entitie转载 2010-12-16 22:40:00 · 465 阅读 · 0 评论 -
sizeof(空类)
<br />#include <iostream><br />classA<br />{<br />};<br />int main()<br />{<br /> std::cout << sizeof(A) << std::endl;<br /> return 0;<br />}<br />1 对空类或只有成员函数的类(sizeof(Class)),其大小为1,这个1是存的什么? <br /> 什么也不存,但是一个类的对象既然要在内存里面存在,就一定要有一个地址,而在C++里面,编译转载 2010-09-30 22:11:00 · 669 阅读 · 0 评论 -
学习C++:实践者的方法(Beta1)
<br />学习C++:实践者的方法(Beta1) <br />By 刘未鹏(pongba) <br />C++的罗浮宫(http://blog.csdn.net/pongba) <br /><br />前言 <br />我的blog以前很长一段时间关注的都是C++中的技术&细节,乃至于读者和应者都寥寥。然而5月份的时候写的一篇“你应当如何学习C++”,阅读量却达到了3万多,在blog上所有文章中却是最高的(且远远超过了第二位);评论数目也有一百多。为什么独独这篇能够激起这么多的回应,想必是国内的C++社群原创 2010-10-04 21:54:00 · 485 阅读 · 0 评论 -
你应当如何学习C++(以及编程)
<br />你应当如何学习C++(以及编程)(rev#1)<br /> <br />By 刘未鹏(pongba)<br />C++的罗浮宫(http://blog.csdn.net/pongba)<br /> <br />Javascript是世界上最受误解的语言,其实C++何尝不是。坊间流传的错误的C++学习方法一抓就是一大把。我自己在学习C++的过程中也走了许多弯路,浪费了不少时间。<br /> <br />为什么会存在这么多错误认识?原因主要有三个,一是C++语言的细节太多。二是一些著名的C++书籍总转载 2010-10-04 21:52:00 · 421 阅读 · 0 评论 -
std::tr1::shared_ptr
<br />在 c++ 98 里面只有一种智能指针,就是 std::auto_ptr,因为具有唯一所有权的特征,所以限制了它的使用范围,比如你无法在容器中使用它。而我们知道 stl 容器是值语义的,如果不能用智能指针管理的话,只有两种办法来使用。<br />一种是类似这样:std::vector<std::string> names;<br />names.push_back("cyberscorpio");<br />std::string name("news818");<br />names.push转载 2010-10-02 10:39:00 · 2066 阅读 · 0 评论 -
修练8年C++面向对象程序设计之体会
<br />六年前,我刚热恋“面向对象”(Object-Oriented)时,一口气记住了近十个定义。六年后,我从几十万行程序中滚爬出来准备写点心得体会时,却无法解释什么是“面向对象”,就象说不清楚什么是数学那样。软件工程中的时髦术语“面向对象分析”和“面向对象设计”,通常是针对“需求分析”和“系统设计”环节的。“面向对象”有几大学派,就象如来佛、上帝和真主用各自的方式定义了这个世界,并留下一堆经书来解释这个世界。 <br /> 有些学者建议这样找“对象”:分析一个句子的语法,找出名词和动词,名转载 2010-09-23 10:41:00 · 378 阅读 · 0 评论 -
快速排序算法
好长时间没有写算法了,感觉手有些生,写起来部快,问题很多#include #include #include void swap(int v[], int i, int j){ int temp = 0; temp = v[i]; v[i] = v[j]; v[j] = temp;}void qsort(int v[], int left, i原创 2013-11-04 21:42:30 · 558 阅读 · 0 评论