自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(105)
  • 资源 (20)
  • 收藏
  • 关注

原创 map容器插入数据的4种方法

在构造map容器后,我们就可以往里面插入数据了。这里讲四种插入数据的方法:第一种:用insert函数插入pair数据:在VC下请加入这条语句,屏蔽4786警告 #pragma warning (disable:4786) )    mapint, string> mapStudent;        mapStudent.insert(pairint, string>(1, "

2017-08-02 18:56:50 19798

转载 #pragma pack 用法详解

pack 为 struct, union 和 class 等的成员对齐指定字节边界. 与编译选项(属性 -> 配置属性 -> C/C++ ->代码生成 -> 结构成员对齐)的 /Zp 开关不同, 它不针对整个项目, 而仅针对模块, 比如一个编译单元. 1. #pragma pack(show)    以警告信息的形式显示当前字节对齐的值.2. #pragma pack(n)  

2017-07-20 10:17:55 1849

原创 C++“准”标准库Boost学习指南(12):Boost.Signals

Boost.Signals信号和接收系统,基于称为publisher-subscriber 和 observer的模式,它是在一个最小相关性系统中管理事件的重要工具。很少有大型应用软件不采用这种强大设计模式的某种变形,尽管他们有各自的实现方式。Signals提供了一个已验证的、高效的手段,将信号(events/subjects)的发生和这些信号要通知的接收者(subscribers/obs

2016-10-19 16:31:26 2407

原创 C++“准”标准库Boost学习指南(11):Boost.Function

Boost.FunctionFunction库实现了一个泛型的回调机制。它提供了函数指针、函数对象和成员函数指针的存储和后续的调用。当然,它与binder库,如 Boost.Bind 和 Boost.Lambda一起工作,大大提高了回调(包括带态度的回调函数)的使用机会。Function常用于需要把函数指针用于回调的地方。例如:信号/接收者的实现,GUI与业务逻辑的分离,以及在标准库容器中

2016-10-19 16:18:45 2560

原创 C++“准”标准库Boost学习指南(10):Boost.Lambda

Boost.LambdaLambda为C++提供lambda表达式及无名函数。在使用标准库算法时特别好用,Lambda允许函数在呼叫点创建,避免了创建多个小的函数对象。使用lambdas意味着更少的代码,在哪需要就在哪写,这比分散在代码各处的函数对象更清晰、更好维护。Lambda 库如何改进你的程序?对函数和函数对象进行适配,使之可用于标准库算法绑定参数到函数调用将

2016-10-19 16:02:19 2165 1

原创 C++“准”标准库Boost学习指南(10):Boost.Lambda

Boost.LambdaLambda为C++提供lambda表达式及无名函数。在使用标准库算法时特别好用,Lambda允许函数在呼叫点创建,避免了创建多个小的函数对象。使用lambdas意味着更少的代码,在哪需要就在哪写,这比分散在代码各处的函数对象更清晰、更好维护。Lambda 库如何改进你的程序?对函数和函数对象进行适配,使之可用于标准库算法绑定参数到函数调用将

2016-10-19 15:28:24 879 1

原创 C++“准”标准库Boost学习指南(9):Boost.Bind

Boost.BindBind是对标准库的绑定器bind1st 和 bind2nd的泛化。这个库支持使用统一的语法将参数绑定到任何类似于函数行为的东西,如函数指针、函数对象,以及成员函数指针。它还可以通过嵌套绑定器实现函数组合。这个库不要求那些对标准库绑定器的强制约束,最显著的就是不要求你的类提供typedefs result_type, first_argument_type, 和 sec

2016-10-19 15:26:46 1727

原创 C++“准”标准库Boost学习指南(8):Boost.Tuple

Boost.Tuple在标准C++中有Pairs(类模板 std::pair), 但它不支持n-tuples。用Tuple.不象用structs 或 classes 来定义n-tuples, 这个类模板支持直接声明和使用,如函数返回类型或参数,并提供一个泛型的方法来访问tuple的元素。Tuple已经被即将发布的Library Technical Report所接受。Tuple 库

2016-10-19 15:06:10 2237

原创 C++“准”标准库Boost学习指南(7):Boost.Variant

Boost.VariantVariant库包含一个不同于union的泛型类,用于在存储和操作来自于不同类型的对象。这个库的一个特点是支持类型安全的访问,减少了不同数据类型的类型转换代码的共同问题。Variant 库如何改进你的程序?对用户指定的多种类型的进行类型安全的存储和取回在标准库容器中存储不同类型的方法变量访问的编译期检查高效的、基于栈的变量存储

2016-10-19 14:52:33 1809

原创 C++“准”标准库Boost学习指南(6):Boost.Any

Boost.AnyAny库支持类型安全地存储和获取任意类型的值。当你需要一个可变的类型时,有三种可能的解决方案:无限制的类型,如 void*. 这种方法不可能是类型安全的,应该象逃避灾难一样避免它。可变的类型,即支持多种类型的存储和获取的类型。支持转换的类型,如字符串类型与整数类型之间的转换。Any实现了第二种方案,一个基于值的可变化的类型,无限可能的类型。这个

2016-10-19 14:42:34 2248

原创 C++“准”标准库Boost学习指南(6):Boost.Any

Boost.AnyAny库支持类型安全地存储和获取任意类型的值。当你需要一个可变的类型时,有三种可能的解决方案:无限制的类型,如 void*. 这种方法不可能是类型安全的,应该象逃避灾难一样避免它。可变的类型,即支持多种类型的存储和获取的类型。支持转换的类型,如字符串类型与整数类型之间的转换。Any实现了第二种方案,一个基于值的可变化的类型,无限可能的类型。这个

2016-10-19 14:11:34 371

原创 C++“准”标准库Boost学习指南(5):正则表达式库 Boost.Regex

Boost.Regex正则表达式是解决大量模式匹配问题的基础。它们常用于处理大的字符串,子串模糊查找,按某种格式tokenize字符串,或者是基于某种规则修改字符串。由于C++没有提供正则表达式支持,使得有些用户被迫转向其它支持正则表达式的语言,如Perl, awk, 和 sed。Regex提供了高效和强大的正则表达式支持,基于与STL同样的前提而设计,这使得它很容易使用。Regex已被即

2016-10-19 14:10:08 1561

原创 C++“准”标准库Boost学习指南(4):Boost.Operators

Boost.Operators  Operators库提供了相关操作符及概念(LessThanComparable, Arithmetic,等等)的实现。定义一个类型的操作符时,保证所有操作符都有定义是一件乏味并容易出错的工作。例如,你提供了operator, 和 operator>= 。Operators可以根据给定类型的最小的用户自定义操作符集合,自动声明并定义其它所有的相关操作符。

2016-10-19 13:58:50 3267

原创 C++“准”标准库Boost学习指南(3):Boost.Utility

Boost.Utility一些本不应在一个库里出现的有用的东西,只是因为它们每个都不太复杂和广泛,不足够形成一个单独的库。但不是说它们没有什么用外;事实上小的工具通常都有最广泛的用处。在Boost, 这些小工具被集中起来,形成一个称为Utility的库。你可以在这找到checked_delete, 一个函数,用于确认在删除点的类型是完整的;还有类noncopyable,用于确保类不能被复制

2016-10-19 13:42:17 1475

原创 C++“准”标准库Boost学习指南(3):Boost.Utility

Boost.Utility一些本不应在一个库里出现的有用的东西,只是因为它们每个都不太复杂和广泛,不足够形成一个单独的库。但不是说它们没有什么用外;事实上小的工具通常都有最广泛的用处。在Boost, 这些小工具被集中起来,形成一个称为Utility的库。你可以在这找到checked_delete, 一个函数,用于确认在删除点的类型是完整的;还有类noncopyable,用于确保类不能被复制

2016-10-19 13:19:06 862

原创 C++“准”标准库Boost学习指南(2):Boost.Conversion

Conversion库包含有一些函数,它们是现有的强制类型转换操作符(static_cast, const_cast, 和 dynamic_cast)的增强。Conversion为安全的多态转换增加了 polymorphic_cast 和 polymorphic_downcast,为安全的数字类型转换增加了 numeric_cast,为文本转换(如string 和 double间的转换)增加 le

2016-10-19 13:17:33 1427

原创 C++“准”标准库Boost学习指南(1):智能指针Boost.smart_ptr

我们学习C++都知道智能指针,例如STL中的std::auto_ptr,但是为什么要使用智能指针,使用它能带给我们什么好处呢?最简单的使用智能指针可以不会因为忘记delete指针而造成内存泄露。还有如果我们开发或者使用第三方的lib中的某些函数需要返回指针,这样的返回的指针被client使用的时候,lib就会失去对返回的指针的控制,这样delete的指针的任务一般就会交给调用方client

2016-10-19 11:48:37 1970

转载 C++“准”标准库Boost学习指南(1):智能指针Boost.smart_ptr

我们学习C++都知道智能指针,例如STL中的std::auto_ptr,但是为什么要使用智能指针,使用它能带给我们什么好处呢?最简单的使用智能指针可以不会因为忘记delete指针而造成内存泄露。还有如果我们开发或者使用第三方的lib中的某些函数需要返回指针,这样的返回的指针被client使用的时候,lib就会失去对返回的指针的控制,这样delete的指针的任务一般就会交给调用方client

2016-10-19 10:08:28 411

转载 VS2010远程调试环境详细配置(Windows用户验证)

远程调试说明:Windows远程调试有两种连接方式:无验证,Windows用户验证。两种调试方式:Attach to process, 直接调试。这里介绍的是Windows用户验证下的直接调试方式。1、首先说明准备工作:(1)关闭两台机器防火墙。(2)两台机器在同一局域网之内,并且需要相互可以ping通。(3)由于是使用Windows验证方式,所以要求两台机

2016-10-14 09:45:54 4379

转载 VS2010远程调试环境配置详解

VS2010远程调试环境配置详细讲解: 阅览下文之前,请看相关符号说明:1. A 代表本地机,即就是研发机 (以下示例为Win764位)2. B 代表远程机,即就是客户机 (以下示例为WinXp32位)3. (###)      括号中的内容为命令顺序 【1】具体步骤(1)在A机上(运行—cmd-ipconfig)获取A机的ipA(p

2016-10-14 09:36:48 3051

原创 等待光标的两种实现方式

有时候在做烦琐的工作时,希望鼠标处于忙状态,有两种简单的方法来实现1.采用ApI函数,大多数采用此方法:BeginWaitCursor();.....处理......EndWaitCursor();该方法这两个函数必须配对使用,并注意处理中提前退出的处理情况,可能一个BeginWaitCursor()函数要对应多个EndWaitCursor();函数。2.采

2016-10-13 17:18:51 2117

转载 判断一个点是否在多边形区域内

/*函数的输入:(1)当前点的坐标p(2)区域顶点数组pt[];(3)顶点数nCount 输出: 在区域内返回TRUE,否则返回FALSE。  Point类型是一个结构: struct Point {    类型 x;//此处类型根据采用的经纬度类型决定。    类型 y; };*/BOOL PtInPolygon(Point p, Poin

2016-08-26 09:34:50 746

转载 判断点是否在多边型内

最近不断遇到类似的几何位置问题,一直没有花时间去总结,本文总结了我常用点跟多边形的位置判断方法以及代码。希望能够对大家有所帮助。文中所指的多边形均为凸多边形,一些描述可能有误,欢迎指正。1.测试的多边形在开始之前,我们需要先构建好测试环境。我构建了一个比较特殊的多边形,如下。/ \|  ||_|从最上面的顶点顺时针坐标(屏幕坐标系)分

2016-08-26 09:32:25 768

转载 注册表编程

一、注册表基础1.1注册表历史背景什么是注册表?我们可以把注册表理解成一种数据库,里面保存着各种数据,如:系统的配置信息,桌面环境,系统软件,IE浏览器等等软件的信息。在微软以前发布的操作系统中(如windows 3.X),把这些信息保存在System.ini,Win.ini等文件中,随着数据量越来越大,越来越复杂,这样ini文件难以胜任,从windows 95开始引入注册表来保存这些复杂

2016-08-26 09:30:34 547

转载 串口通信编程--多线程异步方式

目录一串口通信基础      1.1串口通信原理与特点     1.2串口通信的传输方式     1.3串口通信的同步技术     1.4串行接口标准     二 API函数实现串口通信   2.1打开串口 2.1.1串口是否有驱动    2.1.2连接串口    2.1.3串口逻辑端口号大于10无法打开问题 2.2串口配置 2.2.1设置缓冲区大小

2016-08-26 09:22:25 1672

原创 结构体中用CString的请注意了,不能使用memset()函数来初始化结构体

定义结构体CMyTest{   CString strName;   int n;} MyTest;如果memset(MyTest,0,sizeof(MyTest));则会引起程序崩溃,如果想用memset,CString 换为string即可.关于崩溃原因愚人认为CString的内存分配机制与STL中的string不同.由于时间原因,来不及分析两者的不同点,请其他

2016-07-04 11:40:30 2019 2

转载 防止CListCtrl 闪烁的几种方法

一:彻底解决了CListCtrl的闪烁问题.此灵感来自于WindowMediaPlayer SDK 9方法很简单.如下:在对话框上加了个静态文本框.并把文本框的样式设为透明.再用SetParent()函数把CListCtrl的父窗口设为刚加的静态文本框.嘿嘿彻底不闪了...代码如下:1在CMyDlg中添加成员  CListCtrl   m_List;2BOOL CM

2016-05-16 17:12:26 2093

原创 利用命令切换CTabCtrl控件的Tab页面

在项目中有时需要自动切换CTabCtrl控件的Tab页面,通过下面的发发可以实现该功能:void SwitchTab(int nTab){ NMHDR nm; nm.hwndFrom = m_tabShow.m_hWnd; nm.code = TCN_SELCHANGE; m_tabShow.SetCurSel(nTab); m_tabShow.SendMe

2016-03-30 13:51:42 2176

转载 win32,win64编程永恒;语言编程需要注意的64位和32机器的区别

一、数据类型特别是int相关的类型在不同位数机器的平台下长度不同。C99标准并不规定具体数据类型的长度大小,只规定级别。作下比较:16位平台char         1个字节8位short        2个字节16位int            2个字节16位long         4个字节32位指针         2个字节32位平台

2016-03-21 17:43:22 1911

转载 C/C++面试常见的几个库函数详解(strcpy,memcpy,memset,atoi...)

前言在面试中,常常会被问到几个库函数的实现,虽然代码很短,涉及的细节却特别多,因此特别受面试官青睐,所以要把他们熟记于心,方能应对自如。strcpy()原型声明:char strcpy(char dest, const char *src); 功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间 说明:src和dest所指内存区域不可以

2016-03-08 18:55:29 1284

转载 const 详解

零、文章来由打算将基础知识在看书的同时系统的整理一下,方便大家也方便自己。整理的知识尽量参照书本知识,比网上获取的资料有更高的可信度。一、从 文字常量和常变量 开始1、文字常量程序中的特殊标识符或表达式,由于同时满足: (1)不可寻址(放在代码区) (2)值不可变 所以可视为文字常量。他们是 静态数组名、枚举变量、全局(静态变量)首地址、#define定

2016-03-08 18:28:28 1233

转载 C++: std::string 与 Unicode 如何结合?

C++: std::string 与 Unicode 如何结合? 一旦知道 TCHAR 和_T 是如何工作的,那么这个问题很简单。基本思想是 TCHAR 要么是char,要么是 wchar_t,这取决于_UNICODE 的值:   1: // abridged from tchar.h    2:     3: #ifdef _UNICODE   4:     5:       typ

2016-01-19 17:58:57 4706

转载 内存分配及清空、调试 几种方法的总结

1. 存分配的三个方法:(1)      从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。(2)      在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。(3)    

2016-01-19 17:56:23 7952

转载 C语言宏定义##连接符和#符的使用

#include#define f(a,b) a##b#define g(a) #a#define h(a) g(a)int main(){ printf("%s\n",h(f(1,2))); printf("%s\n",g(f(1,2))); return 0;}在宏定义里,a##b就是把a,b联接起来,比如f(1,2)就是12,但是是数。#a就是把a转化成字串

2015-12-23 16:59:30 21526 1

转载 C,C++宏中#与##的讲解

文中__FILE__与示例1可以参见《使用ANSI C and Microsoft C++中常用的预定义宏》宏中的#的功能是将其后面的宏参数进行字符串化操作(Stringizing operator),简单说就是在它引用的宏变量的左右各加上一个双引号。如定义好#define STRING(x) #x之后,下面二条语句就等价。       char *pChar = "hello";

2015-12-23 16:57:32 655

转载 使用OutputDebugString帮助调试

前面我已经介绍了使用TRACE来帮助我们调试,但使用TRACE有一个限制,只能在将程序DEBUG编译状态下才能使用,下面我们介绍OutputDebugString函数,通过它,可以在在DEBUG或RELEASE情况也可以输出调试日志,从而对那些要求编译为RELEASE的程序可以方便的调试。OutputDebugString的函数原型:void OutputDebugString(

2015-12-23 16:54:04 1818

原创 SendMessageTimeOut函数你使用过吗?

在WINDOW编程中,发送消息是很正常的事情,发送消息的常用API有SendMessage,PostMessage,PostThreadMessage。一般每个线程有两个队列,一个用来接受通过Send函数的消息,另外一个队列接收通过Post接收的消息。该两个函数的基本区别是,一个函数需要等待返回的,相当于函数调用,这个是SendMessage;另外一个是将消息放到对方的队列中直接返回。使用Post

2015-12-23 16:51:50 3880

转载 线程分离的定时器一点经验

说道定时器,很多人都会想到Windows定时器SetTimer吧!其实,项目里面原本确实是使用这种方法实现动画效果的,但是后来问题出现了!由于WM_TIMER消息优先级比较低,常常被丢失,导致一个WM_MOUSEMOVE消息都会影响整个动画的效果。  这时我就考虑,是否能给定时器创建一个单独的线程,接着就发现了“多媒体定时器”这个东西。它是一个高精确度定时器,一般的Windows定时器只能

2015-12-21 15:22:03 1280

原创 获得MFC窗口其它类指针的方法

获得CWinApp:-在CMainFrame,CChildFrame,CDocument,CView中直接调用AfxGetApp()或用theApp-在其它类中只能用AfxGetApp()获得CMainFrame:-在CMinApp中用AfxGetMainWnd()或者m_pMainWnd-在CChildFrame中可用GetParentFrame()-在其它类中用AfxG

2015-12-16 17:42:32 822

转载 排序方法的比较

首先给出各个排序方式的性能比较:排序方法的比较类别排序方法时间复杂度空间复杂度稳定性平均情况最好情况最坏情况辅助存储插入排序直接插入O(n2)

2015-12-14 10:52:55 1155

VC最简单最高效的枚举PC串口

VC最简单最高效的枚举PC串口,一个函数搞定

2015-01-21

多线程临界段类同步演示1

多线程同步演示1,采用MFC的临界段类CCriticalSection来实现多线程同步。

2013-02-18

多线程临界段同步演示1

多线程临界段同步演示1,用不同步和同步来对比多线程编程,直观深刻。采用API方式而非MFC类方式。

2013-02-18

多线程不同步演示2

多线程不同步演示2,一个线程写数据,另一个线程读取数据,在没有同步的情况下,会出现什么问题?若你不知道,你可以看看该源码。

2013-02-01

VC++实现的切换按钮控件源码

VC++实现的切换按钮控件源码,用一个按钮实现两个选项的切换,带切换动画,类似于开关按钮。自绘实现。

2013-01-23

多线程同时操作全局变量的出错演示

多线程同时操作全局变量的出错演示:演示了9个线程同时操作全局变量的出错结果,并采用自动验证结果,直到程序出错,有很好的演示和学习价值。

2013-01-21

线程间通信方式3:消息传递方式

线程间通信方式3:消息传递方式的演示。采用计算演示线程的执行,并采用用户界面线程来实时显示执行的进度,线程间的通信方式采用了3种方式相结合,对多线程间的通信有比较好的学习和研究价值。

2013-01-18

线程间通信方式2:参数传递方式

线程间通信方式2:参数传递方式。通过3类线程的创建方法,演示了给线程传递方式的方式,包括;单参数、多参数和类3类。

2013-01-11

不使用MFC类库而使用CRT标准库函数获取日期时间的简单方法演示

不使用MFC类库而使用CRT标准库函数获取日期时间的简单方法演示. 不用CTime等MFC类,而采用time.h等的函数就能获取系统的日期时间等,简单实用。

2013-01-09

采用全局变量方式实现多线程的通信

采用全局变量方式实现多线程的通信:用一个全局变量来控制时间显示线程的时间显示格式,比较简单,仅供参考和学习,欢迎大家多多交流。

2013-01-05

MFC创建用户界面线程方法2

MFC创建用户界面线程方法2:不用AfxBeginThead函数创建,而是采用CreateThread成员函数。演示了3个用户界面线程的相互通信和工作。采用另一种方法传递线程之间的参数。

2013-01-04

MFC用户界面线程的创建示例

MFC用户界面线程的创建示例,该实例演示了文件复制的自定义,并实时显示操作进度、操作时间等,采用工作线程和用户界面线程想结合,消息的传递等。

2013-01-04

采用AfxBeginThread创建工作线程

采用AfxBeginThread创建工作线程。采用素数的判断来演示,涉及到多参数的传递,消息的响应和信息的实时显示等。

2012-12-24

采用_beginthreadex创建多线程

采用_beginthreadex创建多线程,5个线程模拟5个人,共同合作完成一项任务,采用齐头并进的方式。对_beginthreadex编程有很好的指导意见

2012-12-19

采用_beginthread创建多线程

采用_beginthread创建多线程,创建尽可能多的线程,直到系统不能创建为止,创建数目实时动态显示。

2012-12-18

ActiveX控件测试容器

ActiveX控件测试容器(TstCon32.exe) 在Vista或者windows7操作系统可用 在VS2008 IDE中编译通过。

2012-12-11

多线程同步演示(采用CreateThread()和WaitForMultipleObjects()函数)

采用多线程技术,使用CreateThread WaitForMultipleObjects函数等,实现了5个人赛跑比赛的模拟,并统计比赛结果。是一个比较好的多线程的演示。

2012-12-10

多线程与单线程的对比(采用CreateThread)

多线程实例,采用CreateThread函数。 (1) 该程序还将和单线程做对比。 (2) 由于给线程的函数传递了多个参数,所以采用结构体的方式传递参数。 (3) 为了演示效果,采用了比较耗时的打点处理。

2012-12-07

为 adobe reder添加书签

给 adobe reder添加书签功能,完美解决中文乱码和支持adobe reder10.0、adobe reder11.0

2012-11-29

二进制十进制互转

用c++实现了二进制与十进制的相互转换,并能连续操作,支持带小数位的操作。浮点整数转二进制,带小数的二进制转十进制。

2012-11-21

空空如也

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

TA关注的人

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