多线程编程1
摘要:参考资料: http://blog.csdn.net/JXH_123/article/details/23450031 秒杀多线程系列 http://www.baidu.com/index.php?tn=utf8kb_oem_dg&addresssearch=1#wd=C%2B%2B%E5%BE%AA%E7%8E%AF%E6%B6%88%...
阅读全文
posted @
2014-06-02 16:33
zhuxuekui3
阅读(478)
推荐(0)
realloc 用法
摘要:参考文献: http://blog.csdn.net/snlying/article/details/4005238返回情况 :返回的是一个void类型的指针,调用成功。(这就再你需要的时候进行强制类型转换)返回NULL,当需要扩展的大小(第二个参数)为0并且第一个参数不为NULL,此时原内存变成了...
阅读全文
posted @
2014-05-03 16:14
zhuxuekui3
阅读(374)
推荐(0)
最好是在线程函数内发送消息给主窗口,主窗口响应消息控制进度条控件
摘要:最好是在线程函数内发送消息给主窗口,主窗口响应消息控制进度条控件线程中发送自定义消息到UI线程,在UI线程的消息响应函数中去操作UI界面上的控件,不要再线程中直接操作界面上的控件/C++// 自定义消息号#define WM_MY_MESSAGE WM_USER+1class CMyDlg : public CDialog{...public: // 自定义消息响应函数 afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam); ...private: // 假设这个函数启动线程 void StartThr...
阅读全文
posted @
2014-04-09 01:06
zhuxuekui3
阅读(1019)
推荐(0)
C++中一些个函数的使用
摘要:函数:sprintf的使用 函数功能:把格式化的数据写入某个字符串 函数原型:int sprintf( char *buffer, const char *format [, argument] … ); 返回值:字符串长度(strlen)例子: char* who = "I"; char* whom = "CSDN"; sprintf(s, "%s love %s.", who, whom); //产生:"I love CSDN. " 这字符串写到s中 sprintf(s, "%10.3f",
阅读全文
posted @
2014-03-18 19:33
zhuxuekui3
阅读(284)
推荐(0)
求最大公约数的几种方法
摘要:不多说,直接粘程序: 1: #include "stdafx.h" 2: #include 3: using namespace std; 4: #include 5: #include 6: const int Max = 10; 7: //采用连续整数检测 , 利用求最大公约数的性质解题,有点意思...
阅读全文
posted @
2014-03-12 17:33
zhuxuekui3
阅读(1300)
推荐(0)
实现两个数的互换算法小结
摘要:以下代码通过传递指针,交换两个变量的内容: 1 void swap(int* m, int* n) 2 { 3 4 int c; 5 c = *m; 6 *m = *n; 7 *n = c; 8 9 }10 11 int main()12 {13 int m = 5 , n = 4;14 swap(&m, &n);15 printf("m = %d, n = %d\n", m, n);16 }以下代码通过传递引用,交换两个变量的值: 1 #include 2 #include "stdafx.h" 3 4 void swap(int...
阅读全文
posted @
2014-03-05 23:46
zhuxuekui3
阅读(650)
推荐(0)
C++中引用与指针的区别
摘要:参考文章: C++中引用和指针的区别http://club.topsage.com/thread-2739442-1-1.html下面用通俗易懂的话来概述一下:指针-对于一个类型T,T*就是指向T的指针类型,也即一个T*类型的变量能够保存一个T对象的地址,而类型T是可以加一些限定词的,如const、volatile等等。见下图,所示指针的含义:引用-引用是一个对象的别名,主要用于函数参数和返回值类型,符号X&表示X类型的引用。见下图,所示引用的含义:2、指针和引用的区别首先,引用不可以为空,但指针可以为空。前面也说过了引用是对象的别名,引用为空——对象都不存在,怎么可能有别名!故定义一
阅读全文
posted @
2014-03-05 23:32
zhuxuekui3
阅读(291)
推荐(0)
memcpy( )的使用以及迭代器的使用
摘要:memcpy() -- 拷贝内存内容 相关函数: bcopy(), memccpy(), memmove(), strcpy(), strncpy() 表头文件: #include 定义函数: void *memcpy(void *dest, const void *src, size_t n) 函数说明: memcpy()用来拷贝src所指的内存内容前n个字节到d...
阅读全文
posted @
2014-02-17 19:54
zhuxuekui3
阅读(792)
推荐(0)
三元组与序列化
摘要:以下是稀疏矩阵的测试程序,以及序列化的过程,对于序列化过程,可以参照MSDN里面色实例。 1: // sparse.cpp : 定义控制台应用程序的入口点。 2: // 3: 4: #include "stdafx.h" 5: #include 6: #using 7: #using 8: #using...
阅读全文
posted @
2014-02-17 15:45
zhuxuekui3
阅读(570)
推荐(0)
用户自定义协议之串口发送与接收
摘要:效果图: 开发过程: 一、数据发送端程序讲解 1、规定协议规范,利用虚拟串口工具VSPD来模拟两个串口com2与com3。 2、制作对话框界面,如上左图所示。并为控件添加相应的变量及函数。 3、在工程中插入MSComm控件,并为其绑定CMSComm类的变量m_Comm。 4、为对话框类添加一个bool型变量,用于标识串口是否打开,进而对某些按钮进行使能处理。这里需要添加函...
阅读全文
posted @
2014-02-17 11:24
zhuxuekui3
阅读(5160)
推荐(0)
MFC中函数的使用
摘要:函数语句: ((CStatic*)GetDlgItem(IDC_STATIC1))->SetIcon(AfxGetApp()->LoadIconW(IDI_CLOSE)); 解释: 1、GetDlgItem的返回类型为CWnd,必须强制转换为CStatic类型然后才能调用后面的函数。 2、后面的那一句SetIcon(),设置当前控件的图标,此控件可以为按钮或者PICTURE控件等。 CS...
阅读全文
posted @
2014-02-17 11:21
zhuxuekui3
阅读(1074)
推荐(0)
MFC中几个函数的使用
摘要:1、GetDlgItem() CWnd* GetDlgItem ( int nID ) const;这个就足够了(在MFC中经常这么用),如果你是在win32API下面写的话,那么一般创建一个窗口都会产生一个句柄的.函数功能返回窗口中指定参数ID的子元素的句柄,可以通过返回的句柄对窗口内的子元素进行操作。2、EnableWindow(faluse) 以上函数表示禁用一个控件。比如说是...
阅读全文
posted @
2014-02-16 21:51
zhuxuekui3
阅读(438)
推荐(0)
MSComm串口类的使用 (程序设计)
摘要:参考文档:http://wenku.baidu.com/link?url=MLGQojaxyHnEgngEAXG8oPnISuM9SVaDzNTvg0oTSrrJkMXIR_6MR3cO_Vnh-grkUekLw2CSnQlE2ni5P-CzCCyI36fnNFFl_BkbEbMomP_ MSComm在VS2010中的实现过程 注:在vs2010中MSComm类中一些函数被改变了,例如setco...
阅读全文
posted @
2014-02-16 14:23
zhuxuekui3
阅读(2708)
推荐(0)
文本文件与二进制文件
摘要:二进制文件就是把内存中的数据保存在硬盘中,是内存数据的映射。文本文件就是字符串文件。通常二进制文件打开是一堆乱码,因为记事本程序试图用字符串的方式打开,看到就是乱码。例如你写个程序,int a=10;把a写入文件,用二进制文件保存,大小为4个字节(int的大小),用文本文件保存,大小为2个字节,因为'1','0'有两个字符。其实说白了,都是流式文件。流式文件有很多种, 比如说 屏幕可以认为是输出流。键盘可认为是输入流。鼠标,打印机,等等都是流。文件操作有几个小的函数,比如说文件使用方式 意义 “rt” 只读打开一个文本文件,只允许读数据 “wt” 只写打开或建立
阅读全文
posted @
2014-01-19 23:34
zhuxuekui3
阅读(504)
推荐(0)
文件读写 (流)
摘要:文件读写操作注:下面仅是一个实例,没有实际意义,原则上就是用了,整体的思想,整片整片的读写。实际应用中,不太好。不建议用这种结构。 1: // FileOperation.cpp : 定义控制台应用程序的入口点。 2: // 3: 4: #include "stdafx.h" 5: #include 6: #include 7: #include 8: #define MaxSize 100 9: using namespace std; 10: 11: 12: typedef struct RaderInfor ...
阅读全文
posted @
2014-01-17 23:54
zhuxuekui3
阅读(264)
推荐(0)
vector
摘要:vector能向数组下标那样使用吗,答: 可以比如我用定义vectors;能用s[i]进行运算或者s[i]==s[i+1]吗?答: 可以从函数中返回vector最高效的是采用引用参数的方式 比如你定义一个函数:void fun(vector& vi) // 参数定义为引用{在这里给vi赋值}void main(){ vector s; fun(s);// 调用函数返回数据到s}因为迭代器与容器是分离的,可以通过迭代器来操控容器里面的元素,但不能通过迭代器来操控容器。所以当容器内部发生变化,容器并不通知迭代器发生了什么变化(他们是分离的),所以当发生变化后,迭代器就失效了。而容器何时会发
阅读全文
posted @
2014-01-17 01:17
zhuxuekui3
阅读(418)
推荐(0)
dynamic_cast<const ObjectList&>(msg);
摘要:说简单的就是C里面的强制类型转换,只不过C++里面为了类型安全而这么做的。主要用于 基类与继承类之间。C写多了,类型一般都强转,特别是指针。int * a;void * b = (void*)a;char * c = (char*)b;C++里的_cast结尾的还有另外两个,就是干类似活的,据说是为了类型安全,某些条件下会转换失败。eg:dynamic_cast用于多态性的父子类型对象的指针或引用之间。class A {public: virtual ~A (void) {}};class B : public A {};class C : public B {};int main (v...
阅读全文
posted @
2014-01-16 22:56
zhuxuekui3
阅读(313)
推荐(0)
图论 Krusal算法C++实现
摘要:1.实验用例如下图所示的赋权图表示某七个城市及预先算出它们之间的一些直接通信成路造价(单位:万元),试给出一个设计方案,使得各城市之间既能够通信又使总造价最小并计算其最小值.2实验原理和方法为了求解最小代价,使花费的总代价最小,这是数学中经典的求解最小耗费生成树的算法。其核心思想是寻找每一步的最优解继而求得全局最优解。为了求得最小耗费生成树,我们运用数学中经典的Krusal算法,此算法的核心思想是:1、 假设该图G是不连通的,对该图的边以非降序权重新排列。2、 对于排序表中的每条边,如果现在把它放入T不会形成回路的话,则把它加入到生成树T中;否则丢弃。(找到两个最小的。可以遍历)3、 输出最小
阅读全文
posted @
2014-01-14 21:49
zhuxuekui3
阅读(996)
推荐(0)