随笔分类 - [30]C++
-
C++拷贝构造函数总结
摘要:C++拷贝构造函数总结目录:拷贝构造函数的基础知识拷贝构造函数的使用拷贝构造函数的行为1.拷贝构造函数的基础知识拷贝构造函数(copy constructor)是构造函数,是拷贝已经存在的对象来创建一个新的对象。此方法的声明形式:object(const object&)。例如:class Object{ Object(const Object &);};注意:参数的传递是引用传递的。因为如果在此处使用值传递,会造成递归引用。2.拷贝构造函数的使用拷贝构造函数在什么时候被使用,有助于我们了解拷贝构造函数的用途。一般而言,拷贝构造函数会在以下三种情况下被使用:当构造一个新的对象时 阅读全文
-
CC/G++ 学习笔记
摘要:CC/G++ 学习笔记本文是《An introduction to GCC》的学习笔记,记录使用GCC/G++主要的实用技巧,本文讲述的知识基本上摘自本书,附带自己的一些体验。如果想详细查看本书,请戳这里。一、gcc1. 命令 $ gcc test.c -o test 将test.c 命令编译成test可执行程序。-o 命令制定输出文件名。 没有任何其他的参数即默认编译成可执行程序,输入命令 $ ./test 即可执行。gcc 实际上是分成四步:预处理、编译、汇编、链接。 $ gcc -E hello.c -o hello.i 只执行预处理 $ gcc -S hello.c -o ... 阅读全文
-
C++排序
摘要:浅谈C++之冒泡排序、希尔排序、快速排序、插入排序、堆排序、基数排序性能对比分析(好戏在后面,有图有真相)最近一段时间去武汉参加了N多笔试,在几次试题中都出现了排序。偏偏出现了我没怎么看的插入排序,弄得我好是纠结。趁回学校的机会把这几个不是很复杂的排序重新复习了一下,借此比较了一下他们的效率。让我有点以外的是在数据量达到1W~10W之间,希尔排序竟然比快速排序效率还要高。贴上完整代码!冒泡排序 1 //冒泡排序 2 ////////////////////////////////////////////////////////////////////////// 3 void BubleSor 阅读全文
-
C++静态库与动态库
摘要:C++静态库与动态库C++静态库与动态库这次分享的宗旨是——让大家学会创建与使用静态库、动态库,知道静态库与动态库的区别,知道使用的时候如何选择。这里不深入介绍静态库、动态库的底层格式,内存布局等,有兴趣的同学,推荐一本书《程序员的自我修养——链接、装载与库》。什么是库库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。库有两种:静态库(.a、.lib)和动态库(.so、.dll)。所谓静态、动态是指链接。回顾一下,将一个程序编译成可执行程 阅读全文
-
仿迅雷播放器
摘要:仿迅雷播放器教程仿迅雷播放器教程 -- 基于VLC的MFC播放器 (6)摘要: 代码下载:http://download.csdn.net/detail/qq316293804/6404883 昨天的教程里写着预计MFC播放器会隔得久一点,但是今晚仔细看了下VLC的常用代码,发现VLC封装得真好,和ffmpeg简直就是天上地下的区别,所以呢,很快就将VLC的常用功能都加上啦,基本上都是一行代码解决,再次大喊一声:这酸爽~~~ 简直不敢相信!!! 所以今晚就已经完成了基于VLC的MFC播放器啦,想想当年用那么多时间去折腾ffmpeg,说多了都是泪啊~~~效果如图: 实现了常用的功能,也就是那一排 阅读全文
-
C++双缓冲多线程分析大文件词频
摘要:C++双缓冲多线程分析大文件词频 实习生活告一段落,我正式从一名.NET程序员转入Java阵营,不得不说刚开始用Java的东西是多么的不习惯,但是经过三个月的使用与开发,我也发现了Java的优势:不在于语言,而在于开源。这意味着有更多免费可用的东西,直接复用,但是研究它的人也可以通过代码深造自己的技术水平。 题外话说到这吧,很简单的一个问题,读取一个大型文件(可能超过内存),分析其中英文单词的词频,并输出结果。简化起见,我们假定编码不是Unicode,而是UTF-8或者ANSI,最快速度,榨干磁盘IO是关键所在。 1、最开始 一般来说,遇到这个问题,我们可能想法都是这样: ----... 阅读全文
-
基于ffmpeg的C++播放器1
摘要:基于ffmpeg的C++播放器 (1) 2011年12月份的时候发了这篇博客http://blog.csdn.net/qq316293804/article/details/7107049,博文最后说会开源一个播放器,没想到快两年了,才有时间发博客。 两年前的博客和大部分博客一样,以结果为主,也就是开源一个软件,直接把代码一扔,效果图一截,发一篇介绍性的博客就完事,里面没有任何技术分析。而Alberl在学习的过程中,虽然找到的绝大部分资料也都是这种类型的,帮助也很大,但还是感觉缺点什么。这就是Alberl喜欢CodeProject的原因,因为几乎每一篇文章都提供了以下资料:1、源码下载。 2. 阅读全文
-
模拟天体运行
摘要:利用简单的力学法则来模拟天体运行Posted on2013-10-14 14:19HAL9000阅读(553) 评论(10)编辑收藏Hi,各位,又是我。昨天我发表了我写的泡泡屏保的设计思路,以及源码(http://www.cnblogs.com/haoxiaobo/p/3366625.html),写完文章后,我想,写一个也是写,不如再在这个框架的基本上修改出来一个模拟天体运行的程序,来看看是不是根据简单的万有引力定律,星星间是否就真得会绕着转?于是,这就是我昨天一下午的成果……有关技术方面的东西,上一个文章里已经很完整了,不再多讨论了,讨论一些其他方面的事情吧。首先,您注意到我那些漂亮的星星了 阅读全文
-
C add
摘要:C++学习--应用篇(Windows/Linux)(书籍推荐及分享)我将以平台划分,分别介绍Windows和Linux下个人认为的好书(与基础篇一样,大部分网络上都有电子版);对于C++基础类的图书,这里不再重复,有兴趣的朋友请移步《C++学习--基础篇》。Windows:在Windows平台下主要说的是VC编程(使用MFC),以下将对VC开发的相关图书介绍;对于ATL等,涉及不多,不做评论;《Windows程序设计》这是一本绝版的图书,算是Windows平台下编程指南图书的鼻祖。网络传言甚好,由于年代久远,一般不好下载了,在这里给出下载地址。方便朋友;本书每章的例子都是使用的Windows下 阅读全文
-
一个简洁通用的调用DLL函数的帮助类
摘要:一个简洁通用的调用DLL函数的帮助类 本次介绍一种调用dll函数的通用简洁的方法,消除了原来调用方式的重复与繁琐,使得我们调用dll函数的方式更加方便简洁。用过dll的人会发现c++中调用dll中的函数有点繁琐,调用过程是这样的:在加载dll后还要定义一个对应的函数指针类型,再调用GetProcAddress获取函数地址,再转成函数指针,最后调用该函数。下面是调用dll中Max和Get函数的例子。void TestDll(){typedef int(*pMax)(int a,int b);typedef int(*pGet)(int a);HINSTANCE hMode =LoadLibrar 阅读全文
-
Google C++编程风格指南
摘要:Google C++编程风格指南前言 从小就写字很挫,所以受够了被人鄙视的感觉,今天有个coder突然跟我说,你的代码怎么像小孩写的一样,顿时心情沮丧的极点。越来越发现一致的编程风格的重要性,于是把Google的C++编程风格指南看了一遍, 这里记录下于自己有益的rules。当规则有多个选择时,这里只记录个人习惯的用法, 并不代表它是唯一的用法。命名约定命名管理是最重要的一致性规则,因此我把它放在最前面。尽可能给出描述性名称。int num_errors; int num_completed_connections;文件名全部小写,用下划线做连接符。my_useful_class.ccC++. 阅读全文
-
回头再说
摘要:随笔分类(237)Erlang(109)回头再说-电影(14)回头再说-读书(34)回头再说-生活(80)我常去这里东吴 DONGWU读库 DUKU孤岛 HUANGJIWEI荷记 SUDDENLOTUS架构 Architecture建模 WOLFRAMALPHA精进 NABBLE开源 Erl PROJECT可读 READABILITY命令 COMMAND求知 GOOGLE SCHOLAR杀猪 SHAZHUDE时间 WEB ARCHIVE梳理 LYSE溯源 WIKIPEDIA兔子 RABBITMQ小图 ICON Finder寻欢 FIND BEST争鸣 STACKOVERFLOW转换(rss)作 阅读全文
-
C++之Effective STL
摘要:今天看了下websocket的知识,了解到这是html5新增的特性,主要用于实时web的通信。之前客户端获取服务端的数据,是通过客户端发出请求,服务端进行响应的模式,或者通过ajax每隔一段时间从后台发出请求,然后更新页面的信息,这种轮询的方式使得用户感觉页面是“实时响应”的,这样做虽然简单但未免有些暴力,另外每次请求都会有TCP三次握手并且附带了http头信息,服务器表示压力很大,这就造成了性能上和延迟的问题。 后来的技术方案中又出现了长轮询、Comet、浏览器插件(flash)和Java等来实现服务器往客户端推送消息,但都有一些弊端。 WebSocket的出现,意味着另一种解决方案,其提供 阅读全文
-
函数对象
摘要:函数对象重载函数调用操作符的类,其对象常称为函数对象(function object),即它们是行为类似函数的对象。一个类对象,表现出一个函数的特征,就是通过“对象名+(参数列表)”的方式使用一个类对象,如果没有上下文,完全可以把它看作一个函数对待。这是通过重载类的operator()来实现的。 函数对象更重要的作用是实现函数回调,可以替代指针实现函数回调。定义如下:struct int_max{ int operator()(int x,int y) { return x>y?x:y; }}; 调用时生成一个对象: int_max int_max1;... 阅读全文
-
C++对象模型
摘要:C++对象模型何为C++对象模型?C++对象模型可以概括为以下2部分:1.语言中直接支持面向对象程序设计的部分2.对于各种支持的底层实现机制语言中直接支持面向对象程序设计的部分,如构造函数、析构函数、虚函数、继承(单继承、多继承、虚继承)、多态等等,这也是组里其他同学之前分享过的内容。第一部分这里我简单过一下,重点在底层实现机制。在c语言中,“数据”和“处理数据的操作(函数)”是分开来声明的,也就是说,语言本身并没有支持“数据和函数”之间的关联性。在c++中,通过抽象数据类型(abstract data type,ADT),在类中定义数据和函数,来实现数据和函数直接的绑定。概括来说,在C++类 阅读全文
-
C++11标准后的C++阅读书目
摘要:C++11标准后的C++阅读书目投递人itwriter发布于 2013-09-25 19:44评论(2)有285人阅读原文链接[收藏]«» 英文原文:C++ Reading List C++ 新标准 C++11 的发布导致了大批新书的出现,还有一些经典书籍也进行了更新。Andrew Binstock 在 Dr.dobbs 上给大家推介一些学习 C++ 必需的核心书籍。 1. 《C++程序设计语言》英文第四版,作者: Bjarne Stroustrup 这本书已经被正式列为 C++ 编程的权威书籍。它堪称语言界的权威,独具特色,书面清晰,由设计 C++ 的 Stroustup 阅读全文
-
cegui-0.8.2编译过程详解
摘要:cegui 编译过程详解(cegui-0.8.2)cegui配置整了好长时间了,在一位大牛帮助下终于搞定了,网上的教程大多是老版本的,cegui-0.8.2版的配置寥寥无几,现在总结一下,献给正在纠结的小白们。准备工作 第一步,先下载cegui-0.8.2和CEGUI 0.8.x Dependency http://www.cegui.org.uk/wiki/index.php/CEGUI_Downloads_0.8.2 第二,我们下载cmake,用于构建文件,cmake官网不太稳定,经常打不开,去这里下载吧,我们对cmake的使用也很简单,只需学会如何构建文件即可,简单了解一下如何... 阅读全文
-
8个免费实用的C++GUI库
摘要:8个免费实用的C++GUI库C++标准中并没有包含GUI,这也使得C++开发图形化界面需要依赖于第三方的库。实际上,图形界面恰恰是C++的强项,小到平常使用的各类桌面软件,大到魔兽世界这样的游戏,都是C++擅长的地方。C++之所以能做到这一点,原因在于它是一门即能提供极高的性能,又能提供良好接口的语言。C性能很高,但是封装太差;Java封装很好,但性能不适合做界面开发,更别谈大型游戏。C++的GUI库除了最为人所熟知的MFC,其实还有其它很多,这篇文章列举了8个免费且实用的C++ GUI库。C++是一种多范式,遵循自由的形式,并且通用的一门强大的编程语言,这门语言被视为是中间层次的语言,之所以 阅读全文
-
C/C++ 中 const 修饰符用法总结
摘要:C/C++ 中 const 修饰符用法总结在这篇文章中,我总结了一些C/C++语言中的 const 修饰符的常见用法,供大家参考。 const 的用法,也是技术性面试中常见的基础问题,希望能够帮大家梳理一下知识,给大家一点点帮助。作者是菜鸟一枚,难免出错,还望各位大牛不吝赐教。 首先,来看看const的基本含义。在 C/C++ 语言中,const关键字是一种修饰符。所谓“修饰符”,就是在编译器进行编译的过程中,给编译器一些“要求”或“提示”,但修饰符本身,并不产生任何实际代码。就 const 修饰符而言,它用来告诉编译器,被修饰的这些东西,具有“只读”的特点。在编译的过程中,一旦我们的代码试. 阅读全文
-
模板元编程实现素数判定
摘要:模板元编程实现素数判定模板元编程(英语:Template metaprogramming;缩写:TMP)是一种元编程技术,不夸张的说,这项技术开启了一种新的C++编程方式。编译器使用模板产生暂时性的源码,然后再和剩下的源码混合并编译。这些模板的输出包括编译时期常数、数据结构以及完整的函数。如此利用模板可以被想成编译期的运行。本文介绍了利用模板元编程技术实现在编译期判断一个整数是否为素数的算法。输入为一个大于0的整数,输出为1表示该整数为素数,为0表示为合数。本文的主要目的是用实例说明模板元编程实现算术和逻辑运算的一般设计和编写方法。模板元编程的概念和基本介绍参见维基百科:http://zh.w 阅读全文