- 博客(30)
- 资源 (1)
- 收藏
- 关注
翻译 windows定时器详解,如何使用windows定时器
定时器在VC中的使用频繁,以下讨论定义器的使用方法。定时器的原型是:WINUSERAPI UINT WINAPI SetTimer ( HWND hWnd , UINT nIDEvent, UINT uElapse, TIMERPROC lpTimerFunc);hWnd 是欲设置定时器的窗体句柄。定时时间到时,系统会向该窗体发送WM_TIMER消息。nIDEvent 定时器
2009-10-29 15:49:00 9010
原创 整数溢出,如何判断整数溢出
c语言中存在两类整数算术运算,有符号运算和无符号运算。在无符号运算里,没有了符号位,所以是没有溢出的概念的。所有的无符号运算都是以2的n次方为模。如果算术运算符的一个操作数是有符号书,另一个是无符号数,那么有符号数会被转换为无符号数(表示范围小的总是被转换为表示范围大的),那么溢出也不会发生。但是,当两个操作数都是有符号数时,溢出就有可能发生。而且溢出的结果是未定义的。当一个运算的结果
2009-10-27 16:11:00 28175 3
原创 _MSC_VER的含义
_MSC_VER的含义: Reports the major and minor versions of the compiler. For example, 1310for Microsoft Visual C++ .NET 2003. 1310 represents version 13 and a 1.0 pointrelease. The Visual C++ 200
2009-10-27 12:17:00 3195
原创 推荐给大家的桌面管理软件: Fences
有了Fences, 你可以自定义和管理你的桌面图标,使他们能很好的组织在一起。 下面是一张截图: 我想你会喜欢的。下载地址: http://software-files-l.cnet.com/s/software/11/10/85/46/fences_public.exe?e=1256549012&h=914d460743590b7c654fe004244d9ee2&lop=lin
2009-10-26 17:57:00 3063 1
转载 字符编码,ansi, unicode,utf-8, utf-16
第一篇:═══════════════════════════════════════════════Unicode(Universal Multiple-Octet Coded Character Set):目前最流行和最有前途的字符编码规范,因为它解决了不同语言编码的冲突。 Uicode由来:最初的字符编码ascii(8bit,最高位为0)只能表示128个字符,表示英文、数
2009-10-23 16:38:00 2816 2
原创 c++的POD类型详解
最早看到POD(plain old data)类型,是在imperfect c++里。我觉得这是一本把我带到c++世界里的一本很重要的书。书里是这样解释POD的: 1、 所有标量类型(基本类型和指针类型)、POD结构类型、POD联合类型、以及这几种类型的数组、const/volatile修饰的版 本都是POD类型。 2、 POD结构/联合类型:一个聚合体
2009-10-23 16:33:00 9982
翻译 Effective STL- 需要一个一个字符输入时考虑使用istreambuf_iterator
条款29:需要一个一个字符输入时考虑使用istreambuf_iterator假设我们要把一个文本文件拷贝到一个字符串对象中。似乎可以用一种很有道理的方法完成:ifstream inputFile("interestingData.txt");string fileData((istream_iterator(inputFile)), // 把inputFile读入 i
2009-10-21 23:12:00 8023
翻译 Effective STL- 熟悉非标准的散列容器(hash 容器)
条款25:熟悉非标准散列容器STL程序员一般用不了多久就开始惊讶,“vector、list、map,很好,但是散列(hash)表在哪里"?唉,在标准C++库里没有任何散列表。 每个人都同意这是个不幸,但是标准委员会觉得需要加给他们的工作可能会过渡地推迟标准的完成。可以肯定标准的下一个版本将包含散列表,但是目前,STL没有散列的东西。但是如果你喜欢散列表,那么振作起来。你不需要放弃或自
2009-10-21 22:21:00 2251
翻译 Effective STL: 考虑用已序vector代替关联容器
条款23:考虑用已序vector代替关联容器当需要一个提供快速查找的数据结构时,很多STL程序员立刻会想到标准关联容器:set、multiset、map和multimap。直到现在这很好,但不是永远都好。如果查找速度真得很重要,的确也值得考虑使用非标准的hash容器。如果使用了合适的hash函数,则可以认为hash容器提供了常数时间的查找。(如果选择了不好的hash函数或表的太小,has
2009-10-21 22:14:00 1681
翻译 effective STL - 避免原地修改set和multiset的键
条款22:避免原地修改set和multiset的键本条款的动机很容易理解。正如所有标准关联容器,set和multiset保持它们的元素有序,这些容器的正确行为依赖于它们的有序性。如果你改了关联容器里的一个元素的值(例如,把10变为1000),新值可能不在正确的位置,而且那将破坏容器的有序性。很简单,是吗?这对于map和multimap特别简单,因为试图改变这些容器里的一个键值的程序将不
2009-10-20 21:51:00 3866
翻译 Effective STL 条款21: 关联容器的strict weak order(让比较函数对相等的值返回false)
条款21: 永远让比较函数对相等的值返回false让我向你展示一些比较酷的东西。建立一个set,比较类型用less_equal,然后插入一个10:set > s; // s以“<=”排序s.insert(10); // 插入10现在尝试再插入一次10:s.insert(10);对于这个insert的调用,set必须先要判断出10是否已经位于其中了。
2009-10-20 21:38:00 6236 1
翻译 Effective STL - 为指针的关联容器指定比较函数
条款20:为指针的关联容器指定比较函数假定你有一个string*指针的set,你把一些动物的名字插入进set:set ssp; // ssp = “set of string ptrs”ssp.insert(new string("Anteater"));ssp.insert(new string("Wombat"));ssp.insert(new string
2009-10-20 21:10:00 2217
原创 effective STL - 了解相等和等价的区别
STL有许多比较对象是否有同样的值的情况。比如,当你用find来定位区间中第一个有特定值的对象的位置,find必须可以比较两个对象,看看一个的值是否与另一个相等。(operator==)。同样,当你尝试向set中插入一个新元素时,set::insert必须可以判断那个元素的值是否已经在set中了。find算法和set的insert成员函数是很多必须判断两个值是否相同的函数的代表。但
2009-10-19 22:00:00 1855
原创 SourceInsight3.5序列号
如题: SI3US-205035-36448SI3US-466908-65897 SI3US-368932-59383SI3US-065458-30661SI3US-759512-70207
2009-10-19 10:36:00 78712 15
原创 effective STL : 使用“交换技巧”来修整过剩容量
条款17:使用“交换技巧”来修整过剩容量假设你正在为TV游戏秀《Give Me Lots Of Money — Now!》写支持软件,而且你要跟踪可能的竞争者,你把它们保存在一个vector中:class Contestant {...};vector contestants;当这个秀需要一个新的竞争者时,它将被申请者淹没,你的vector很快获得很多元素。但是秀的制作人
2009-10-17 22:02:00 1312
原创 effective STL - 小心string实现的多样性
Bjarne Stroustrup曾经用奇特的标题写一篇文章,《Sixteen Ways to Stack a Cat》[2。事实表明实现string几乎有和那一样多的方法。当然,作为有经验而且老于世故的软件工程师,我们应该忽视“实现细节”,但是如果爱因斯坦是对的,上帝存在于细节里,现实要求我们有时皈依宗教。即使当细节不重要的时候,对它们有一些了解使我们能够确信它们不重要。例如
2009-10-17 21:49:00 1489
原创 使用vector::reserve来避免不必要的重新分配
关于STL容器,最令人称赞的特性之一就是是只要不超过它们的最大大小,它们就可以自动增长到足以容纳你放进去的数据。(要知道这个最大值,只要调用名叫max_size的成员函数。)对于vector和string,如果需要更多空间,就以类似realloc的思想来增长大小。这个类似于realloc的操作有四个部分:分配新的内存块,它有容器目前容量的倍数。在大部分实现中,vector和string
2009-10-17 20:32:00 7949 1
翻译 effective STL - 尽量使用vector和string来代替动态分配的数组(char *)
尽量使用vector和string来代替动态分配的数组这一刻,你决定使用new来进行动态分配,你需要肩负下列职责:你必须确保有的人以后会delete这个分配的内存。如果后面没有delete,你的new就会产生一个内存泄漏。你必须确保使用了delete的正确形式。对于分配一个单独的对象,必须使用“delete”。对于分配一个数组,必须使用“delete []”。如果使用了d
2009-10-17 20:08:00 3049
原创 一个c/c++函数调用栈的实现
函数调用栈的实现。可用于实现简单的脚本解释器。声明:#pragma onceconst int BUFFERSIZE = 1024;const int growfactor = 2; // this stack is used as call stack.class TStack{private: size_t size; // the stack le
2009-10-16 11:41:00 1443
翻译 windows消息和消息队列详解
windows消息和消息队列 与基于MS - DOS的应用程序不同,Windows的应用程序是事件(消息)驱动的。它们不会显式地调用函数(如C运行时库调用)来获取输入,而是等待windows向它们传递输入。 windows系统把应用程序的输入事件传递给各个窗口,每个窗口有一个
2009-10-15 22:14:00 34396 3
原创 如何使用STL PriorityQueue 优先队列
相信大家对优先队列不陌生。STL提供的PriorityQueue属于容器适配器,底层默认用vector容器来实现。实现原理是在用vector里构造一个Heap(堆),堆一般是用数组来储存的。下面是一个使用有限队列的例子,用来实现一个错误关联器,总是把优先级高的错误放在最前面。#include #include #include #include // this cl
2009-10-15 15:07:00 3422
原创 list::splice()函数详解
list::splice实现list拼接的功能。将源list的内容部分或全部元素删除,拼插入到目的list。函数有以下三种声明:void splice ( iterator position, list& x ); // void splice ( iterator position, list& x, iterator i );void splice ( iterator
2009-10-15 12:11:00 68376 6
转载 如何从vector里删除元素(erase的副作用)
现在用stl的人越来越多, stl确实是套很漂亮的算法和数据结构库. 但是初用stl的人往往会遇上很多问题.从一个容器中删除元素,是很常用的操作,但是也是初学者常会犯错误的地方,上次baosong就发现了删除map和list中元素会犯的错误. vector是stl里很常用的一个容器, 和map,list等容器相比, 从vector中删符合某些条件的元素有更多的麻烦.比如,我们要完成如下的任务
2009-10-15 10:20:00 7721 2
原创 STL容器中元素的具体需求
STL容器对元素使用的是值语义(valuesemantics). 也就是说,容器会储存要添加的元素的副本。并且在需求时返回这些元素的副本。容器还可以利用赋值运算符对元素赋值。以及调用析构函数销毁元素。因此,在编写一个可用于STL容器的类时,必须要求是可拷贝的。(copyable). 如果你倾向于使用引用语义,此时你需要保存元素的指针而不是元素的值。容器复制一个指针的时候,也是简单
2009-10-14 11:45:00 1066
原创 一道容易出错的笔试题
#include using namespace std; struct Foo{ Foo() {} Foo(int) {} void fun() {} }; int main() { Foo a(10);//语句1 a.fun();//语句2 Foo b();//语句3 b.fun();//语句4 return 0; } A:语句1 B:语句2 C:语句3 D:语句4 答案选什么呢?
2009-10-12 15:48:00 1278 3
原创 让edit control不显示光标
方法一:把 Edit 控件的 Disabled 属性设置为 true 即可,有两种方法:方法二: C/C++ code通过代码实现://其中 IDC_EDIT1 是窗体中Edit的控件ID//1.添加消息映射ON_EN_SETFOCUS(IDC_EDIT1, OnSetfocusEdit1)//2.在消息函数中处理void CSohoADlg::OnSetfocus
2009-10-12 13:24:00 5114 1
转载 程序员的出路(转)
由于国奥队的惨败,近日很多的知名人士都在热烈地讨论中国足球的出路,其实结论与上一次前一次前前一次都大同小异,这些人是吃饱了没事干,日复一日年复一年地折腾,也没什么效果,可他们还会继续折腾下去,因为我们总不能不看电视不读报纸吧,中国男足一而再再而三地OVER,我也没发现刘建宏黄建翔们就枯萎憔悴下去,最多刚开始的时候有几许伤感,过不了几日又满脸肥肉地给我们上课,在我看来,他们是对的,没有必要为没
2009-10-10 18:15:00 812
原创 静态连接库和动态链接库的区别
windows下, 库可以通过以下两种方式来发布: static link library和dynamic link library.一般我们称之为静态库和动态库(DLL)。 什么是静态连接库(static link library),什么是动态链接库(dynamic link library) 首先,静态链接库与动态链接库都是共享代码的方式。 如果采用静态链接库
2009-10-10 15:31:00 4912
原创 复杂的指针
要理解指针, 尤其是和一些其他类型修饰符放在一起的指针, 看上去很难,其实不然。一个类型声明里会出现很多修饰符,他们就像普通的表达式一样,有优先级和结合性。只要掌握了这些规律,分析一个复杂的指针类型就很容易了。 分析时, 先从变量名开始,然后根据修饰符的优先级结合性,一步一步分析。下面看几个最常用的例子: int p; // 普通的int变量 int *p;
2009-10-10 10:19:00 1646
原创 VC++操作Excel 2007
自己设计的。用来读excel 2007的。excel 2007的数据一般都是double 和string的。希望对大家能有所帮助。 声明: #if _MSC_VER > 1000#pragma once#endif #include "excel12.h" class CExcelReader{public: CExce
2009-10-09 18:29:00 6367 4
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人