C++
文章平均质量分 97
feimashenhua
这个作者很懒,什么都没留下…
展开
-
C++操作符重载
一、重载规则I.可以重载的操作符+-*/%^&|~!=>+=-=*=/=%=^=&=|=转载 2010-01-04 15:58:00 · 471 阅读 · 0 评论 -
C/C++程序内存泄漏检测
C++内存泄露的检测(一)一Visual Studio 调试器和 C 运行时 (CRT) 库为我们提供了检测和识别内存泄漏的有效方法。主要使用函数:_CrtDumpMemoryLeaks();二 实例#define _CRTDBG_MAP_ALLOC //输出更详细的report#include #include //以上的内容必须放在其他include的前转载 2012-02-17 16:45:14 · 676 阅读 · 0 评论 -
C/C++ 数学库函数
所在函数库为math.h、stdlib.h、string.h、float.h1. 绝对值int abs(int i) 返回整型参数i的绝对值double cabs(struct complex znum) 返回复数znum的绝对值double fabs(double x)转载 2012-03-09 15:02:02 · 1175 阅读 · 0 评论 -
ASCII码
ASCII码英文全称America Standard Code for Information Interchange,中文意思:美国信息交换标准码。它已被国际标准化组织(ISO)定为国际标准,称为ISO 646标准。适用于所有拉丁文字字母,ASCII码有7位码和8位码两种形式。ASCII码于1968年提出,用于在不同计算机硬件和软件系统中实现数据传输标准化,在大多数的小型机和全部的个人计算机都使原创 2012-06-05 18:53:21 · 851 阅读 · 0 评论 -
STL中改变map的默认比较方式
大家知道,STL中的map底层是用红黑树实现的,其泛型原型如下:template class _Key, class _Tp, class _Compare, class _Alloc>class map { ...... }其中_Key表示比较的键(key),_Tp表示值(value),_Compare表示比较方式,_转载 2012-08-01 18:58:47 · 580 阅读 · 0 评论 -
setlocale处理宽字节
#ifdef __GNUC__ #define CSET_GBK "GBK"#define CSET_UTF8 "UTF-8" #define LC_NAME_zh_CN "zh_CN" // ifdef __GNUC__#elif defined(_MSC_VER) #define CSET_GBK "936"#define原创 2011-03-28 10:54:00 · 1108 阅读 · 0 评论 -
了解“云计算”
首先让我们了解一下大师们对“云计算”的经典看法: 比尔·盖茨1989年在谈论“计算机科学的过去现在与未来时”时说:“用户只需要640K的内存就足够了。”那时,所有的程序都很省很小,100MB的硬盘简直用不完。 李开复(现任Google全球副总裁、中国区总裁)打了一个形象的比喻:钱庄。最早人们只是把钱放在枕头底下,后来有了钱庄,很安全,不过兑现起来比较麻烦。现在发展到银行可以到任转载 2013-12-09 10:25:34 · 603 阅读 · 0 评论 -
Stl算法
stl算法采用覆盖模式,而不是插入模式。所以调用者必须保证目标区间拥有足够的元素空间。也可以用特殊的插入型迭代器来解决这个问题。非变动性算法名称作用for_each对每个元素执行某项操作count返回元素个数count_if返回满足某一准则的元素个数min_element转载 2013-12-25 11:42:35 · 568 阅读 · 0 评论 -
链接器都干了什么?
目前项目在不停的增长,我想还是在它规模仍旧很小的时候把它的模块分清楚,不同模块分到不同的 projects 里面,这里面出现了很多问题,也反映了我知识上的很多不足。1 , project 最后的输出要设置清楚,有的是 static lib ,有的是 dll ,有的是 exe ,不一样的输出要设置好,它们都是 linker 的成果,但是以不同的方式应用。2 , project depende转载 2014-01-09 17:18:16 · 711 阅读 · 0 评论 -
C语言中sscanf 的用法
以下是对C语言中sscanf函数的使用方法进行了详细的分析介绍,需要的朋友参考下 名称:sscanf() - 从一个字符串中读进与指定格式相符的数据.复制代码 代码如下: 函数原型:Int sscanf( string str, string fmt, mixed var1, mixed var2 ... );int scanf( const char *f转载 2014-08-03 15:29:44 · 768 阅读 · 0 评论 -
双机热备与集群简介
问:能解释一下什么是双机热备吗? 答:所谓双机热备,就是将中心服务器安装成互为备份的两台服务器,并且在同一时间内只有一台服务器运行。当其中运行着的一台服务器出现故障无法启动时,另一台备份服务器会迅速的自动启动并运行(一般为2分钟左右),从而保证整个网络系统的正常运行!双机热备的工作机制实际上是为整个网络系统的中心服务器提供了一种故障自动恢复能力。 问转载 2015-07-01 17:24:27 · 771 阅读 · 0 评论 -
宽字符与控制台输出
在我刚开始学C/C++的时候,字符类型使用的都是char。接触Win32编程之后,养成了使用wchar_t的习惯,于是再写控制台程序的时候自然就使用wchar_t了。然而在控制台程序中使用宽字符会导致各种奇怪的问题,这些问题主要是在输出上。下面分享一下我在这方面的心得。首先来看一下这段代码:#include int main() { wprintf(L"%s", L"博客园"转载 2017-03-30 11:01:14 · 2191 阅读 · 1 评论 -
函数调用 堆栈
这段代码反汇编后,代码是什么呢?#include stdio.h>long test(int a,int b){ a = a + 3; b = b + 5; return a + b;}int main(int转载 2011-10-11 18:00:59 · 529 阅读 · 0 评论 -
VC 程序自杀
有时候,我们需要创建一个运行后能够自己删除自己的可执行程序即自删除文件。很明显如果一个进程通过直接调用DeleteFile()来删除自己是不可能的。必须另想办法,经过本人在网上参考很多资料后实际测试并集众家之所长,发现有二种方法效果比较好。现在将其封装成函数,这样使用将更加容易:转载 2011-08-12 17:13:20 · 1623 阅读 · 1 评论 -
c++ string主要的用法
toupper,tolower地球人都知道 C++ 的 string 没有 toupper ,好在这不是个大问题,因为我们有 STL 算法:string s("heLLo");transform(s.begin(), s.end(), s.begin(), ::t转载 2011-08-09 15:39:39 · 14472 阅读 · 2 评论 -
网络游戏程序员须知:收包与发包
<br />本文为作者原创翻译并且加入了一些自己的思路和观点,转载请注明。<br />作者:rellikt@gmail.com<br />首发链接:http://blog.csdn.net/rellikt/archive/2010/08/23/5833233.aspx<br />原文链接:http://gafferongames.com/networking-for-game-programmers/sending-and-receiving-packets/<br />简介<br /> 大家好,今天我们就转载 2010-09-09 16:41:00 · 681 阅读 · 0 评论 -
网络游戏程序员须知 收包与发包
<br />本文为作者原创翻译并且加入了一些自己的思路和观点,转载请注明。<br />作者:rellikt@gmail.com<br />首发链接:http://blog.csdn.net/rellikt/archive/2010/08/23/5833233.aspx<br />原文链接:http://gafferongames.com/networking-for-game-programmers/sending-and-receiving-packets/<br />简介<br /> 大家好,今天我们就转载 2010-09-09 16:39:00 · 498 阅读 · 0 评论 -
网络游戏程序员须知 UDP vs TCP
<br />本文为作者原创翻译并且加入了一些自己的思路和观点,转载请注明。<br />作者:rellikt@gmail.com<br />首发链接:http://blog.csdn.net/rellikt/archive/2010/08/21/5829020.aspx<br />原文链接:http://gafferongames.com/networking-for-game-programmers/udp-vs-tcp/<br /> 这篇教程让我们就从最基本的网络数据收发开始谈起吧。其实这部分才是网络程序转载 2010-09-09 16:37:00 · 591 阅读 · 0 评论 -
柔性数组结构成员
<br />【柔性数组结构成员 <br /> C99中,结构中的最后一个元素允许是未知大小的数组,这就叫做柔性数组成员,但结构中的柔性数组成员前面必须至少一个其 他成员。柔性数组成员允许结构中包含一个大小可变的数组。sizeof返回的这种结构大小不包括柔性数组的内存。包含柔性数组成员的结构用malloc ()函数进行内存的动态分配,并且分配的内存应该大于结构的大小,以适应柔性数组的预期大小。】 <br />C语言大全,“柔性数组成员” <br />看看 C99 标准中 灵活数组成员: <br />结构体变转载 2010-08-24 12:34:00 · 429 阅读 · 0 评论 -
文本文件与二进制文件
一、文本文件与二进制文件的定义 大家都知道计算机的存储在物理上是二进制的,所以文本文件与二进制文件的区别并不是物理上的,而是逻辑上的。这两者只是在编码层次上有差异。 简单来说,文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等。二进制文件是基于值编码的文件,你可以根据具体应用,指定某个原创 2010-05-30 09:55:00 · 420 阅读 · 0 评论 -
文本文件与二进制文件总结
一、文本文件与二进制文件的定义 大家都知道计算机的存储在物理上是二进制的,所以文本文件与二进制文件的区别并不是物理上的,而是逻辑上的。这两者只是在编码层次上有差异。 简单来说,文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等。二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值是什么意思(这样一原创 2010-05-06 11:26:00 · 552 阅读 · 0 评论 -
阻塞模式下的send、recv、close总结
阻塞模式下的send、recv、close总结: 对于send函数: send函数只负责将数据提交给协议层。 当调用该函数时,send先比较待发送数据的长度len和套接字s的发送缓冲区的长度,如果len大于s的发送缓冲区的长度,该函数返回SOCKET_ERROR; 如果len小于或者等于s的发送缓冲区的长度,那么send先检查协议是否正在发送s的发送缓冲中的原创 2010-04-02 11:02:00 · 3729 阅读 · 1 评论 -
CString和string区别
CString,是ATL/MFC共享的, string是C++标准库的 相同点:(1)用他们都可以取代对char*的使用。(2)都封装了有丰富的字符串操作接口。(3)他们都是C++的类库。--以string的使用为例,不能有如下用法: string * pstr = NULL;原创 2010-03-15 15:13:00 · 1696 阅读 · 0 评论 -
socket
什么是 socket? 你经常听到人们谈论着 “socket”,或许你还不知道它的确切含义。现在让我告诉你:它是使用标准Unix 文件描述 符 (file de script _ or)和其它程序通讯的方式。什么?你也许听到一些Unix高手(hacker)这样说过:“呀,Unix中的一切就是文件!”那个家伙也许正在说到一个事实:Unix 程序在执行任何形式的 I/O的时候,原创 2010-02-10 11:42:00 · 431 阅读 · 0 评论 -
谈谈父窗口和所有者窗口
一、概念和区别 在windows系统中,每个窗口对象都对应有一个数据结构,形成一个list链表。系统的窗口管理器通过这个list来获取窗口信息和管理每个窗口。这个数据结构中有四个数据用来构建list,即child、sibling、parent、owner四个域。 所以我们可以看到,窗口之间的关系有两种:owner-owned 关系和parent-child关系。前者称原创 2010-02-10 11:43:00 · 415 阅读 · 0 评论 -
c++ socket编程入门
什么是 socket? 你经常听到人们谈论着 “socket”,或许你还不知道它的确切含义。现在让我告诉你:它是使用标准Unix 文件描述 符 (file de script _ or)和其它程序通讯的方式。什么?你也许听到一些Unix高手(hacker)这样说过:“呀,Unix中的一切就是文件!”那个家伙也许正在说到一个事实:Unix 程序在执行任何形式的 I/O的时候,程序转载 2010-01-28 12:41:00 · 1068 阅读 · 0 评论 -
STL vector实现
假定你现在已经能熟练使用vector,如果你很好奇vector背后是怎么实现的,那么本文或许对你能有所帮助。 vector代表了c++的动态数组,大小是动态可增长的。你不必考虑自己手动分配或释放内存,也不必担心内存泄漏,vector帮你做了这一切。vector的使用很简单,但是要做到有效率,没那么容易,了解他背后的实现原理能帮助达到这一目的。 言归正传。本文基于SGI STL的一个转载 2010-01-28 12:35:00 · 13078 阅读 · 0 评论 -
STL高效编程(-) STL的容器
STL有很多概念,迭代器,高效的算法,函数对象,但是对于大多数的开发者而言,STL最突出的地方还是容器(Container),容器远远比数组强大和灵活。容器可以动态增长,独立管理内存,提供对容器元素的高效的灵活的访问,等等。STL容器是有效的封装最常见的数据结构和算法,在我看来,STL容器就是代表着c++的数据结构,从数组,链表,栈,队列,表,哈希表。每一个容器代表着一种数据结构。概括一下转载 2010-01-28 12:32:00 · 2911 阅读 · 0 评论 -
LIB和 DLL的区别与使用
<br />共有两种库:<br />一种是LIB包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library。<br />一种是LIB包含函数代码本身,在编译时直接将代码加入程序当中,称为静态链接库 static link library。<br />共有两种链接方式:<br />动态链接使用动态链接库,允许可执行模块(.dll文件或.exe文件)仅包含在运行时定位DLL函数的可执行代码所需的信息。<br />静态转载 2010-09-13 13:19:00 · 624 阅读 · 0 评论 -
C++中的四种强制类型转换的区别
<br />使用标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。<br /> <br />1 static_cast<br />用法:static_cast < type-id > ( expression ) <br />该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法:<br />①用于类层次结构中基类和子类之间指针或引用的转换。<br />转载 2010-11-29 16:09:00 · 419 阅读 · 0 评论 -
[STL]函数对象/仿函数
提到C++ STL,首先被人想到的是它的三大组件:Containers, Iterators, Algorithms,即容器,迭代器和算法。容器为用户提供了常用的数据结构,算法大多是独立于容器的常用的基本算法,迭代器是由容器提供的一种接口,算法通过迭代器来操控容器。接下来要介绍的转载 2011-08-03 10:39:05 · 675 阅读 · 0 评论 -
STL容器的erase用法
STL中的容器按存储方式分为两类,一类是按以数组形式存储的容器(如:vector 、deque); 另一类是以不连续的节点形式存储的容器(如:list、set、map)。在使用erase方法来删除元素时,需要注意一些问题,以避免引起不可预知错误或崩溃。原创 2011-08-02 20:20:47 · 1934 阅读 · 0 评论 -
do...while(0)的妙用
在C++中,有三种类型的循环语句:for, while, 和do...while, 但是在一般应用中作循环时, 我们可能用for和while要多一些,do...while相对不受重视。 但是,最近在读我们项目的代码时,却发现了do...while的一些十分聪明的用法,不是用转载 2011-07-25 16:21:32 · 414 阅读 · 0 评论 -
也谈面向对象的系统功能设计
之前在写我的程序人生的过程中,很多网友都希望我介绍一些编程开发方面的经验。我之前也说过,虽然我也算计算机专业科班出身,不过很多东西并不是在学校里从老师那里学来的,而是在工作中经过失败后总结出来的。至于总结出来的是不是最好的,最适合的,那就不知道了。我只知道在我转载 2011-07-06 09:52:06 · 495 阅读 · 0 评论 -
二叉树
<br /><br />//二叉树处理头文件<br />//包括二叉树的结构定义,二叉树的创建,遍历算法(递归及非递归),<br />/*<br /> 作者:成晓旭<br /> 时间:2001年10月7日(18:49:38-20:00:00)<br /> 内容:完成二叉树创建,二叉树的前,中,后序遍历(递归)<br /> 时间:2001年10月7日(21:09:38-22:09:00)<br /> 内容:完成二叉树的前,中序遍历(非递归)<br /> 时间:2001年10月8日(10:09:38-11:29转载 2011-04-23 12:27:00 · 493 阅读 · 0 评论 -
堆排序
<br /><br />堆,是一棵完全二叉树,根的值大于左右子树中所有结点的值,左右子树也是堆,除此之外,对其它元素之间的大小关系(如左右子树之间元素大小关系)没有要求。<br />这是大根堆,如果把“大于”换成“小于”,就是小根堆,这里都以大根堆为例。<br />由于堆是完全二叉树,所以可以用数组来模拟,在数据结构上算是比较简单(所以才敢学啊,以前未考虑到它是完全二叉树,以为要用到二叉链表,迟迟没敢看。。)。<br />用数组模拟二叉树(当然也包括堆)的话,如果根节点的下标为0的话,则对于每个结点i,其左转载 2011-04-21 19:59:00 · 1146 阅读 · 1 评论 -
STL hash_map
<br />STL hash_map 系列<br />为什么需要 hash_map<br /> 用过 map 吧?map 提供一个很常用的功能,那就是提供 key-value 的存储和查找功能。例如,我要记录一个人名和相应的存储,而且随时增加,要快速查找和修改:<br /> 岳不群-华山派掌门人,人称君子剑<br /> 张三丰-武当掌门人,太极拳创始人<br /> 东方不败-第一高手,葵花宝典<br /> ...<br /> 这些信原创 2011-04-15 12:28:00 · 1120 阅读 · 0 评论 -
清空缓冲区
<br />1. 为什么 fflush(stdin) 是错的?<br />首先请看以下程序:<br /><br />#include <stdio.h><br />int main( void )<br />{<br />int i;<br /><br />for (;;)<br /> {<br /> fputs("Please input an integer: ", stdout);<br /> scanf("%d", &i原创 2011-03-28 17:13:00 · 799 阅读 · 0 评论 -
使用VC++和CRT库定位和排除内存泄漏
<br /><br />介绍:<br /> 动态分配、回收内存是C/C++编程语言一个最强的特点,但是中国哲学家孙(Sun Tzu,我不知道是谁?那位知道?) 指出,最强的同时也是最弱的。这句话对C/C++应用来说非常正确,在内存处理出错的地方通常就是BUGS产生的地方。一个最敏感和难检测的BUG就是内存泄漏-没有把前边分配的内存成功释放,一个小的内存泄漏可能不需要太注意,但是程序泄漏大块内存,或者渐增式的泄漏内存可能引起的现象是:先是性能低下,再就是引起复杂的内存耗尽错误。最坏的是,一个内存泄漏程序可能转载 2011-05-15 12:29:00 · 635 阅读 · 0 评论 -
Winsock IOCP模型
view plaincopy to clipboardprint?// IOCP2.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <WinSock2.h> #include <MSWSock.h> #include <Windows.h> #include <process.h> #pragma comment(lib, "WS2_32.lib")转载 2011-03-02 17:44:00 · 632 阅读 · 0 评论