随笔分类 -  C++

摘要:使用了std::string作为成员变量的结构体,千万不能使用memset进行初始化,否则程序会爆 阅读全文
posted @ 2020-07-29 19:35 715776681 阅读(388) 评论(0) 推荐(1)
摘要:写代码时,经常会计算某一段代码的运行时间,以下提供一个微秒级别的类供参考 阅读全文
posted @ 2016-10-11 10:36 715776681 阅读(192) 评论(0) 推荐(0)
摘要:希尔排序:可看作直接插入排序的改进版. 基本思想: 将整个待排序序列,按照一定的间距gap分割成若干个子序列.然后再分别进行直接插入排序.最后,对全体元素进行直接插入排序. 时间复杂度: O(n)-->O(n^2) 空间复杂度:O(1) 是否稳定排序:不稳定 阅读全文
posted @ 2016-07-15 16:32 715776681 阅读(144) 评论(0) 推荐(0)
摘要:快速排序基本思想: 1.选择一个基准哨兵元素,通常选择第一个或者最后一个元素(可改进); 2.通过一趟排序讲待排序的记录分割成独立的两部分,其中一部分记录的元素值均比基准元素值小。另一部分记录的 元素值比基准值大; 3.此时基准元素放入正确位置; 4.然后分别对这两部分记录用同样的方法继续进行排序, 阅读全文
posted @ 2016-07-15 13:38 715776681 阅读(167) 评论(0) 推荐(0)
摘要:直接插入排序是不断的将一个元素插入到已排序的序列中. 时间复杂度: O(n)-->O(n^2) 空间复杂度:O(1) 是否稳定排序:稳定 阅读全文
posted @ 2016-07-14 13:44 715776681 阅读(130) 评论(0) 推荐(0)
摘要:冒泡排序:对还未排序的序列,自前向后相邻元素依次比较和调整,让大的元素下沉,小的元素上浮. 时间复杂度: O(n)-->O(n^2) 空间复杂度:O(1) 是否稳定排序:稳定 阅读全文
posted @ 2016-07-13 16:21 715776681 阅读(137) 评论(0) 推荐(0)
摘要:自定义结构类型,为支持插入到stl set或者排序,一种方式是重载operator<运算符成员函数.如果忘记将函数标识为const,则在编译时会报 6>c:\program files (x86)\microsoft visual studio 10.0\vc\include\xfunctional 阅读全文
posted @ 2016-05-28 17:41 715776681 阅读(592) 评论(0) 推荐(0)
摘要:多线程一直是短板,整理相关知识方便查询 临界区(Critical Section) 临界区是一段供线程独占式访问的代码.在任意时刻,若有一个线程正在访问该代码段,如果其他所有试图访问的线程都将被挂起,直到访问的线程离开该代码段才可进入,保证线程安全. 适用于控制数据访问. 因其线程所有权其可以用于线 阅读全文
posted @ 2016-05-26 14:13 715776681 阅读(282) 评论(0) 推荐(0)
摘要:Event可以实现不同进程中的线程同步. 相关函数: CreateEvent创建或打开一个事件对象 lpEventAttributes表示安全控制,一般直接用NULL. bManualReset为TRUE表示手动重置事件状态,每次需要调用ResetEvent置事件为未触发状态.若为FALSE则表示自 阅读全文
posted @ 2016-05-25 22:41 715776681 阅读(359) 评论(0) 推荐(0)
摘要:Semaphore用于对资源进行计数.允许一定数量的线程同时访问该资源.可以用于进程间同步 相关函数 CreateSemaphore 创建或打开一个信号量对象 lpSemaphoreAttributes表示安全控制,一般直接用NULL. lInitialCount表示初始资源数量(必须>=0且<=l 阅读全文
posted @ 2016-05-24 22:05 715776681 阅读(349) 评论(0) 推荐(0)
摘要:互斥量(Mutex) 互斥量是一个可以处于两态之一的变量:解锁和加锁.只有拥有互斥对象的线程才具有访问资源的权限.并且互斥量可以用于不同进程中的线程的互斥访问. 相关函数: CreateMutex用于创建互斥量 lpMutexAttributes表示安全控制,一般直接为NULL. bInitialO 阅读全文
posted @ 2016-05-24 16:25 715776681 阅读(298) 评论(0) 推荐(0)
摘要:在C++中,我们使用new 和delete进行自己的内存管理.void test_func(){ someType *ptr = new someType; //使用ptr ptr->function(); delete ptr; ptr = nullptr;}View... 阅读全文
posted @ 2015-12-03 15:33 715776681 阅读(246) 评论(0) 推荐(0)
摘要:线程与进程的关系及区别定义: 进程Process是具有一定独立功能的程序关于某个数据集合的一次运行活动, 是系统进行资源分配和调度的一个独立单位. 线程Thread是进程的一个执行实体, 是CPU调度和分派的基本单位, 是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点运行 阅读全文
posted @ 2015-11-24 14:25 715776681 阅读(209) 评论(0) 推荐(0)
摘要:连续在两个公司使用WM_COPYDATA实现进程间通信了,整理一下具体步骤:一. 进程A通过ShellExecute启动进程B, 将用于通信的窗口句柄hWndA(已强转为int值)通过命令行参数传递给进程B, B保存hWndA.二. 进程B组装消息COPYDATASTRUCT copyData, 将... 阅读全文
posted @ 2015-11-13 14:56 715776681 阅读(521) 评论(0) 推荐(0)
摘要:struct st_data{ st_data(int i) : id(i) {} int id;};对于STL标准序列容器vector/deque/list(以vector为例)当我们需清空容器vector vec时, 只需简单循环遍历即可 for (auto it = ... 阅读全文
posted @ 2015-10-27 17:47 715776681 阅读(217) 评论(0) 推荐(0)
摘要:最近在做MFC 界面开发. 在一个CDialog窗口DoModal模态显示时, 会将次级窗口带出闪现(比如将一个窗口active, 然后点击我现在程序需要弹框的按钮,弹出弹出正常,但原来active的窗口会有一次闪现).几经周折, 才发现是因为Dialog窗口中一个控件属性中包括WS_EX_TOPM... 阅读全文
posted @ 2015-10-27 10:01 715776681 阅读(393) 评论(0) 推荐(0)
摘要:我们常常在一个窗口上放置很多控件,在改变窗口大小时,控件会跟着一起闪烁...此时,可以将窗口添加WS_CLIPCHILDREN属性即可.(如果包含多层,都需要WS_CLIPCHILDREN属性)默认情况下父窗口是会对子窗口背景进行绘制的,而WS_CLIPCHILDREN含义是要求父窗口不对子窗口区域... 阅读全文
posted @ 2015-08-06 19:22 715776681 阅读(313) 评论(0) 推荐(0)
摘要:WTL中,可使用以下方式加载文件资源。CResource res;if( !res.Load(type, resource) ){ DWORD dd = GetLastError(); return NULL;}当resource为资源ID时,会出现错误1813,找不到映像文件中指定的资源类型其... 阅读全文
posted @ 2014-12-02 16:25 715776681 阅读(334) 评论(0) 推荐(0)
摘要:CVTRES : fatal error CVT1100: duplicate resource. type:DIALOG, name:901, language:0x0804LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏WindowUI编程使用... 阅读全文
posted @ 2014-11-20 09:53 715776681 阅读(396) 评论(0) 推荐(0)
摘要:动态增加菜单项,在以前是一件比较淡定的问题.但是... 在VS2010中创建MFC单文档应用程序, 默认在MainFrm中有成员变量 CMFCMenuBar m_wndMenuBar; 这是什么BCG的东东,不淡定了,想用以前的GetMenu()和GetSubMenu(),发现都不靠谱,搜索一圈,发 阅读全文
posted @ 2013-01-30 18:35 715776681 阅读(470) 评论(0) 推荐(0)