自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

David的专栏

成功源于勤奋

  • 博客(14)
  • 资源 (1)
  • 收藏
  • 关注

原创 DLL和进程的地址空间

      创建D L L常常比创建应用程序更容易,因为D L L一般只包含独立存在的函数,这些函数可以很容易的被其他的应用程序所调用 。D L L中通常不支持消息循环的处理或者窗口的创建。    D L L只是一组源代码模块,每个模块包含了应用程序(可执行文件)或另一个D L L将要调用的一组函数。当所有源代码文件编 译后,它们就像应用程序的可执行文件那样被链接程序所

2009-08-31 23:48:00 2158 1

原创 DLL入门(一)

自从M i c r o s o f t公司推出第一个版本的Wi n d o w s操作系统以来,动态链接库( D L L)一直是这个操作系统的基石。Windows API 中的所有函数都包含在D L L中。3个最重要的D L L是K e r n e l 3 2 . d l l,它包含用于管理内存、进程和线程的各个函数; U s e r 3 2 . d l l,它包含用于执行用户界面任务(如窗口

2009-08-31 23:37:00 1093

原创 STL高效编程( 五)-尽量使用区间操作函数来代替单元素操作函数。

 给定两个vectorv1和v2,使v1的内容和v2的后半部分相同的最简单方法是什么?不要为“当v2有偶数个元素时才有一半”而烦恼。 时间到!如果你的答案是v1.assign(v2.begin() + v2.size() /2, v2.end()); 或者其他很相似的东西,你就完全对了,可以拿金奖。如果你的答案涉及到多于一个函数的调用,但没有使用任何形式的循环,你接近了正确答案

2009-08-30 15:59:00 1487 2

原创 STL高效编程(三) - 用empty()来代替size()判断容器是否为空

用empty()来代替检查size()是否为空对于任意容器c,写下if (c.size() == 0)...本质上等价于写下if (c.empty())... 这就是例子。你可能会奇怪为什么一个构造会比另一个好,特别是事实上empty()的典型实现是一个返回size()是否返回0的内联函数。你应该首选empty()的构造,而且理由很简单:对于所有的标准容器,empt

2009-08-29 22:32:00 6417

原创 STL高效编程(三)-使容器元素的拷贝正确和高效

 首先,你必须要明白的是,容器容纳着许多对象,但不是你传给它的那些原始对象,而是对象的拷贝。 此外,当你从容器中获取一个对象时,得到的不是容器里的那个对象,而是对象的拷贝。同样的,当你向容器中添加一个对象时(通过insert或push_back),添加到容器的是你给的对象的拷贝。copy进去,copy出来,这就是STL的方式。所以,STL要求对象必须是可拷贝的。对象被存到容器里之后,对

2009-08-27 23:16:00 2535 2

原创 STL高效编程(二)- 注意容器的不同特点,小心容器无关的代码

 STL是建立在泛型之上的。数组泛型为容器,以对象类型为参数。函数泛型成算法,以迭代器类型为参数。指针泛型为迭代器,参数化了所指向的对象的类型。 这只是个开始。独立的容器类型泛化为序列或关联容器,而且类似的容器拥有类似的功能。标准的以连续内存为实现的容器都提供随机访问迭代器,标准的基于节点的容器都提供双向迭代器。序列容器支持push_front或push_back,但关联容器不支持。关

2009-08-26 22:18:00 1122

原创 如何查看各个类型的最大值

问题源于同事的一个问题,VC编译器里如何查看double的最大值? 他在limits.h里没找到。 在limits.h里面,只可以看到整型的最大值,但是看不到浮点数的最大值。浮点数的最大值可以这样得到: #include #include  using namespace std; // compile with: /EHsc  int main()

2009-08-26 22:01:00 1933

原创 STL高效编程(-) STL的容器

STL有很多概念,迭代器,高效的算法,函数对象,但是对于大多数的开发者而言,STL最突出的地方还是容器(Container),容器远远比数组强大和灵活。 容器可以动态增长,独立管理内存,提供对容器元素的高效的灵活的访问,等等。STL容器是有效的封装最常见的数据结构和算法,在我看来,STL容器就是代表着c++的数据结构,从数组,链表,栈,队列,表,哈希表。每一个容器代表着一种数据结构。 

2009-08-25 22:47:00 2317

原创 CListBox一些用法

最近编程序需要用到listbox,感觉listbox还是比较简单的。有问题,去msdn。 1. listbox 有单选和多选两个模式。    单选状态下,只能选择一个item,多选状态下,可以选择多个item。 2. list的每一个item有会有显示的text和与之关联的data。一个是字符串类型,一个是整型。 3. 如何实现listlox元素的上移和下移    

2009-08-24 16:23:00 10381 3

原创 SendMessage和PostMessage的区别

 1、首先是返回值意义的区别,我们先看一下 MSDN 里的声明:     LRESULT SendMessage (  HWND hWnd,                                              UINT Msg,                                              WPARAM wParam,    

2009-08-18 10:33:00 982 1

原创 如何将64位整型转换为宽字符串

今日遇到的一个问题,给出的解决方案如下:  1. 首先,用sprintf转换为char * (安全考虑,用springf_s或者是snprintf)2. 用MultiByteToWideChar将转换后的字符串转换为宽字符(unicode) 注意的是,对于非 int64, 可以用wsprintf()直接将数据格式化为宽字符集,但是wsprintf不支持64位的整型。 代

2009-08-17 11:27:00 3377

原创 网络字节序转换函数(64位)

在网络编程里,网络字节序是big-endian的,而大部分的PC的系统都是X86处理器系列,X86采用的是little-endian,所以需要将网络数据流转换成本地数据流的话,需要进行字节序的转换。 标准库里提供了hlton()和nthl()两个函数来支持转换。hston(unsigned short), hlton(unsigned long)  将本地字节序转换为网络字节序

2009-08-17 11:14:00 16761 4

原创 VC++中如何获得一个当前进程的运行目录

利用windows API获得: CString GetAppPath() {    CString strAppPath;  // 保存结果   TCHAR szModuleFileName[MAX_PATH]; // 全路径名  TCHAR drive[_MAX_DRIVE];  // 盘符名称,比如说C盘啊,D盘啊  TCHAR dir[_MAX_DIR]

2009-08-13 16:26:00 2851 1

原创 memmove 和 memcpy的区别

 memcpy和memmove()都是C语言中的库函数,在头文件string.h中,作用是拷贝一定长度的内存的内容,原型分别如下: void *memcpy(void *dst, const void *src, size_t count);void *memmove(void *dst, const void *src, size_t count);   

2009-08-13 16:12:00 1185 1

c++ TR1 文档

c++ tr1de的文档 下一代c++标准库的候选成员 最新的c++技术

2009-04-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除