- 博客(34)
- 资源 (4)
- 收藏
- 关注
原创 【C++ STL学习之八】stack用法
#include #include using namespace std;int main (){ stack myTest; for(int i = 0; i { myTest.push(i); } while(!myTest.empty()) { cout myTest.pop(); } r
2013-04-30 22:02:03 491
原创 【C++ STL学习之七】set用法
#include #include using namespace std;int main (){ set myTest; set::iterator iter; myTest.insert(3); myTest.insert(6); myTest.insert(4); myTest.insert(9); //正序输出 for(
2013-04-30 21:48:05 504
转载 C++中建立对象间消息连接的一种系统方法——回调函数
C++中建立对象间消息连接的一种系统方法——回调函数用过C++进行过面向对象程序设计的用户都知道,程序中的对象很少单独存在。不考虑对象间的相互作用几乎是不可能的。所以,标识对象间的关系或建立对象间的消息连接是面向对象程序设计的一项重要任务。本文着重从C++程序设计的角度,提出一种建立对象间消息连接的实用方法。如果你想详细了解面向对象程序设计技术,请参阅有关专著。大家都知道对
2013-04-24 23:14:53 586
转载 STL中map用法详解
STL中map用法详解Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的
2013-04-21 20:47:03 457
转载 C语言位运算详解
C语言位运算详解作者:911说明:本文参考了http://www2.tsu.edu.cn/www/cjc/online/cyuyan/,算是对其的修正,在此将本文列为原创,实有抄袭之嫌疑。甚是惭愧!位运算是指按二进制进行的运算。在系统软件中,常常需要处理二进制位的问题。C语言提供了6个位操作运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的ch
2013-04-21 20:45:03 535
转载 11个高效的VS调试技巧
11个高效的VS调试技巧介绍调试是软件开发周期中的一个很重要的部分,有时很有挑战性,有时候则让程序员迷惑,有时候让程序员发疯,但是。可以肯定的是,对于任何不是太那个微不足道的程序来说,调试是不可避免的。近年来,调试工具的发展已经使得很多调试任务简单省时了。 本文总结了十个调试技巧,当你使用VS的时候可以节省你很多时间。1.悬停鼠标查看表达式调试有时候很有
2013-04-12 23:48:44 715
转载 VS2010 断点调试
VS2010中的调试技巧 断点今天的博文将介绍Visual Studio中的一些实用调试技巧。这是受我朋友Scott Cate (他发表过几十篇很棒的VS技术文章) 启发。他最近告诉我,许多Visual Studio下的程序员,甚至一些很有经验的开发人员,都不知道这些技巧。希望这篇文章能帮你掌握这些技巧。它们都很简单,却能帮你节约大量的时间。跳到当前光标处(Ctrl+F10
2013-04-12 23:32:58 856
转载 DLL断点调式
在VS2010 C++中调试DLL工程的方法 1、在“Solution Explorer”中找到要调试的dll项目,点击右键,选择Set as StartUp Project,将dll设置为调试启动项目;然后选择dll项目,点击右键,选择Properties,打开属性页设置页面;2、在Properties 页面的中,选择Configuration Properties
2013-04-12 23:31:25 1195
转载 dll动态调用和静态调用有什么区别
2010-06-14 22:1一).静态调用其步骤如下:1.把你的youApp.DLL拷到你目标工程(需调用youApp.DLL的工程)的Debug目录下;2.把你的youApp.lib拷到你目标工程(需调用youApp.DLL的工程)目录下;3.把你的youApp.h(包含输出函数的定义)拷到你目标工程(需调用youApp.DLL的工程)目录下;4.打开你的目标工
2013-04-12 22:58:38 1841
转载 VS2008 DLL
1、动态连接和静态连接的区别。1、隐式链接就是在程序开始执行时就将DLL文件加载到应用程序当中。隐式链接必须的文件:lib .2、显式链接是应用程序在执行过程中随时可以加载DLL文件,也可以随时卸载DLL文件,这是隐式链接所无法作到的,所以显式链接具有更好的灵活性,对于解释性语言更为合适。不过实现显式链接要麻烦一些。在应用程序中用LoadLibrary或MFC提供的AfxLoadL
2013-04-12 22:55:39 524
转载 COM笔记-引用计数
COM笔记-引用计数fangyukuan2010.6.6com组件将维护一个称作是引用计数的数值。当客户从组件取得一个接口时,此引用计数值将增1。当客户使用完某个接口后,组件的引用计数值将减1.当引用计数值为0时,组件即可将自己从内存中删除。 为什么要选择为每一个接口单独维护一个引用计数而不是针对整个组件维护引用计数呢?主要有两个原因:一是使程序调试更为方
2013-04-09 23:52:30 631
转载 普通接口实例
普通接口实例(vs2008)代码下载:http://www.box.net/shared/tlke8tb7j9#include using namespace std; #include // Define interface. /* 输出一个字符串*/void trace(const char* pMsg){ cout pMs
2013-04-09 23:51:01 791
转载 DLL-创建DLL
在实现了IUnknown之后,组件和客户之间只是一种非常松散的连接,这使用组件和客户各自可以发生变化而不会对对方造成什么影响。下面讨论如何将组件放入到动态链接库(dll)中。关于DLL更多内容可以参考我的其它文章:DLL-基本概念DLL-创建DLLDLL-使用DLLhttp://www.cnblogs.com/fangyukuan/arc
2013-04-09 23:49:05 644
转载 HRESULT
HRESULTHRESULT(Here's the RESULT)值分成32位值, HRESULT值中16到30这15个比特位包含的是设备代码。设备代码标识的是可以返回HRESULT返回代码的操作系统部分。由于Windows操作系统是由Microsoft开发的。因此它保留有定义设备代码的权力。 HRESULT值的查找获取与某个特定HR
2013-04-09 23:48:32 1612
转载 GUID
GUID 它实际上是组件和接口的标识号static const IID IID_IX = { 0x1ee235bd, 0x2e73, 0x49c2, 0xa5, 0x7c, 0x8b, 0xe5, 0x96, 0x92, 0x7e, 0xa2};实际上IID是一个128比特(16字节)的一个GUID结构。GUID是英文Globally Unique Identifier
2013-04-09 23:48:04 2710
转载 Widows 注册表
Widows 注册表 HKEY_CLASSES_ROOT在此关键字之下,可以看到有一个CLSID关键字。在CLSID关键字之下列有系统中安装的所有组件的CLSID。注册表CLSID是一个具有如下格式的串:00000010-0000-0010-8000-00AA006D2EA4 HKEY_CLASSES_ROOT的开头,列出的将是各种应用程序所注册的文件扩展名。在扩展名之
2013-04-09 23:47:28 1468
转载 CoCreateInstance
CoCreateInstance创建组件的最简单的方法是使用CoCreateInstance函数。在COM库中包含一个用于创建组件的名为CoCreateInstance的函数。此函数需要一个CLSID参数,在此基础上创建相应组件的一个实例,并返回此组件的某个接口。 CoCreateInstance 的声明HRESULT _stdcall CoCreateInstance(
2013-04-09 23:41:39 3223
转载 【C++ STL学习之六】STL算法之for_each
for_each()函数将调用者提供的操作施加于每一个元素身上。它既可以是非变动性算法,也可以说是变动性算法。[cpp] view plaincopyprint?template class InputIterator, class Function> Function for_each (InputIterator first,
2013-04-09 23:23:22 565
转载 【C++ STL学习之四】容器list深入学习
一、list基础List使用一个双向链表来管理元素。图一显示了list的结构。图一 list的结构任何型别只要具备赋值和可拷贝两种性质,就可以作为list的元素。二、list的功能list的内部结构和vector和deque截然不同,在很多方面都表现不同:1、list不支持随机存取。所及既不提供下表操作符,也不提供at()函数
2013-04-09 23:22:03 506
转载 【C++ STL学习之五】容器set和multiset探秘
一、set和multiset基础set和multiset会根据特定的排序准则,自动将元素进行排序。不同的是后者允许元素重复而前者不允许。需要包含头文件:#include set和multiset都是定义在std空间里的类模板:[cpp] view plaincopyprint?templatecla
2013-04-09 23:20:48 501
转载 【C++ STL学习之三】容器deque深入学习
C++ STL容器deque和vector很类似,也是采用动态数组来管理元素。使用deque之前需包含头文件:#include 它是定义在命名空间std内的一个class template:templateclass _Ax = allocator >class deque;第一个template参数用来表示元素型别,第二个可
2013-04-09 23:19:37 513
转载 【C++ STL学习之二】容器vector大总结
一、容器vector头文件:#include二、vector的功能特点:(1)支持随即存取。 (2)在末端添加或删除元素,性能很好。但是在前段或者中部的话,性能较差。需要移动。注意:函数size()可以返回vector的大小,即vector中实际元素的个数。而capacity()返回容量。区别看下面的示例代码:
2013-04-09 23:18:43 738
转载 【C++ STL学习之一】容器的共通能力和共通操作总结
一、C++ STL各容器有一些共通的能力其中三个最核心的能力是:(1)所有容器提供的是“value语意”而不是“reference语意”。容器进行元素的安插操作时,内部实施的是拷贝操作,存放的是元素的副本。因此容器的每一个元素必须能被拷贝。如果打算存放的对象不具备public 拷贝构造函数或者你要得不是对象的副本,那么容器元素只能是指针。(2)所有元素形成一
2013-04-09 23:17:30 686
转载 函数模板的声明和使用
函数模板的声明和使用1. 函数模板的声明template(参数表){ 函数体}2. 使用2.1templateT Add(T a, T b){ T c = a + b; return c;}int a, b;Add(a, b);// 上面的T经过编译器, 就编程int了(有一点像C中的宏).
2013-04-09 23:13:26 1147
原创 字符串按ACSII码排序
#include int main(){char s[10]="chenyxjko";char tem;for (int i=0;i{for (int j=1;j{if (s[j] {printf("%c,%c\n",s[j],s[j-1]);tem=s[j];s[j]=s[j-1];s[j-1]= tem;}} }print
2013-04-07 22:58:09 867
原创 h头文件 .lib库文件 .dll动态链接库文件关系
1、.h头文件是编译时必须的,lib是链接时需要的,dll是运行时需要的。2、若生成了DLL,则肯定也生成 LIB文件。lib文件是必须在编译期就连接到应用程序中的,而dll文件是运行期才会被调用的。3、如果要完成源代码的编译和链接,有头文件和lib就够了。如果也使动态连接的程序运行起来,有dll就够了。4、LIB文件的作用:告诉链接器调用的函数在哪个DLL中,函数执行代码在DLL
2013-04-06 20:51:38 532
转载 HOOK其他进程API和全局HOOK-API
HOOK其他进程API和全局HOOK-API 2007-11-23 15:22:56分类:来自:cooldiyHOOK是一种WINDOWS下存在很久的技术了。 HOOK一般分两种1。HOOK MESSAGE 2。HOOK API 本问讨论的是HOOK API。(如果你是HOOK高手就不要看了) 在最初学HOOK-API的时候通常都是通过覆
2013-04-06 17:31:35 1274
原创 多线程同步——互斥、事件、临界区区别
1、互斥对象和事件对象是内核对象。速度慢,可以在多个进程的各个线程间进行同步。2、临界区:工作在用户方式下,速度快。但是无法设置超时时间,容易产生死锁。只能用于对象在同一进程里线程间的互斥访问。适合控制数据访问。 3、临界区和互斥对象在Windows平台都下可用;Linux下只有互斥对象可用。用途:四种进程或线程同步互斥的控制方法1、临界区:通过对多线程的串行化来访问公共资源或
2013-04-04 01:02:22 1258
转载 多线程火车票售票系统——临界区实现线程同步
#include #include DWORD WINAPI Fun1Proc(LPVOID lpParameter);DWORD WINAPI Fun2Proc(LPVOID lpParameter);int index = 0;int tickets = 100;CRITICAL_SECTION g_cs; // 临界区对象 void main()
2013-04-04 00:49:05 1117
转载 多线程火车票售票系统——自动重置事件对象实现线程同步
#include #include DWORD WINAPI Fun1Proc(LPVOID lpParameter);DWORD WINAPI Fun2Proc(LPVOID lpParameter);int index = 0;int tickets = 100;HANDLE g_hEvent; //全局事件对象句柄 如果是进程间,必须用命名的方式,在另外一个进
2013-04-04 00:41:06 1350
转载 多线程火车票售票系统——人工重置事件对象实现线程同步(会有问题的)
#include #include DWORD WINAPI Fun1Proc(LPVOID lpParameter);DWORD WINAPI Fun2Proc(LPVOID lpParameter);int index = 0;int tickets = 100;HANDLE g_hEvent; //全局事件对象句柄void main(){HAN
2013-04-04 00:31:13 1258
转载 多线程火车票售票系统——互斥对象实现线程同步
1、利用互斥对象实现线程同步#include #include DWORD WINAPI Fun1Proc(LPVOID lpParameter);DWORD WINAPI Fun2Proc(LPVOID lpParameter);int index = 0;int tickets = 100;HANDLE hMutex; //全局互斥对象句柄void ma
2013-04-03 23:19:24 1919
转载 多线程简单示例
1、示例代码#include //访问API函数#include#include #include DWORD WINAPI Fun1Proc(LPVOID lpParameter);void main(){HANDLE hThread1;hThread1 =CreateThread(NULL,0,Fun1Proc,NULL,0,NULL); /
2013-04-03 22:31:09 499
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人