
C/C++
ccnyou
这个作者很懒,什么都没留下…
展开
-
伪多态的循环链表C++实现【多类型支持】
伪多态的循环链表C++实现【多类型支持】带详细注释DuLinkList.hDuLinkList.cpp原创 2011-05-14 20:38:00 · 1082 阅读 · 0 评论 -
fstream打开失败后重新打开新文件一个问题
请看这则代码,看看你能不能发现其中的错误: ifstream fileStream(fileName.c_str()); while (fileStream.fail()) { string tmpFileName; cout<<"打开文件失败!请输入文件名:"<<endl; cin>>tmpFileName; fileStream.open(tmpFileName.c原创 2012-09-17 22:59:51 · 2880 阅读 · 0 评论 -
设计模式之替换原则 — 从二叉树说起
之前我们老师说过,二叉树不是树的特殊情况(意思是指,二叉树不应该作为树的子类) ,当时下面的大部分同学包括我在内都表示无法接受。今天才发现,老师是对的。这是从【替换原则】方面来考虑。为了说明这个问题,我们来引入另一个数学中常常提到的问题:正方形是一个特殊的矩形。我想这句话在数学方面无人反对,并且也无需反对。但是在面向对象角度来看这样表达很不清楚。我们先来看看替换原则的概念:┌───────原创 2012-10-16 22:20:00 · 1510 阅读 · 0 评论 -
二分查找的 C++ 实现
只是作为 stdlib 中的 bsearch 的一个拓展吧,看看声明:void *bsearch(const void*key, const void *base, size_t nelem, size_t width, int(*fcmp)(const void *,const *));参数:第一个:要查找的关键字。第二个:要查找的数组。第三个:指定数组中元素的数目。第四原创 2012-10-27 00:18:05 · 6695 阅读 · 0 评论 -
在wxwidgets 界面编程使用 png 图片
浏览博客时候发现这篇文章《wxwidgets 界面编程如何使用png 图片》由于原文代码在我机器测试不太靠谱,会崩溃,然后就自己动手按照它的思路弄了自己实现了下。首先是把png图片转成hex保存一个数组中,这里偶之前做了个GUI工具,将就着还可以用,想偷懒的可以下载:http://download.youkuaiyun.com/detail/ccnyou/4616751运行截图:原创 2012-10-04 22:25:55 · 4286 阅读 · 4 评论 -
wxWidgets加速键(热键)
原文链接:http://forums.wxwidgets.org/viewtopic.php?f=32&t=24779&sid=fbaec3bf10eda383c4c5ecc952b576ff加速键是为了实现通过某种组合键来快速执行菜单命令.加速键的处理是在所有的键盘事件(包括字符事件)之后.标准的加速键包括Ctrl+ O用来打开一个文件,Ctrl+V用来把剪贴板上的数据粘贴到应用程序中等.最转载 2012-12-17 19:24:45 · 2815 阅读 · 0 评论 -
《wxWidgets》wxSizer 使用 入门
貌似 wxWidgets 官方的 Simple 没有专门说 wxSizer 的,帮助文档可能是偶理解能力不够,没怎么看懂,然后谷歌之,找到这篇文章,总算对这个 wxSizer 有了点概念。。。原文是英文的,由于太长了,个人时间不是很充裕,翻译的话等下次,先转载过来,原文链接: http://neume.sourceforge.net/sizerdemo/PS:由于优快云破烂排版问转载 2012-10-03 23:44:06 · 2180 阅读 · 0 评论 -
VS2010 C++ 提升权限 代码(win7)
来源:http://blog.renren.com/share/225305041/7163025407 //提权 HMODULE hDll = ::LoadLibrary("ntdll.dll"); typedef int (__stdcall * type_RtlAdjustPrivilege)(int, bool, bool, int*); typ转载 2013-05-16 19:39:20 · 3427 阅读 · 0 评论 -
SO_LINGER和优雅关闭连接
原文:http://unliminet.blog.51cto.com/380895/346686当调用closesocket关闭套接字时,SO_LINGER将决定系统如何处理残存在套接字发送队列中的数据。处理方式无非两种:丢弃或者将数据继续发送至对端,优雅关闭连接。事实上,SO_LINGER并不被推荐使用,大多数情况下我们推荐使用默认的关闭方式(即下方表格中的第一种情况)。转载 2013-05-11 02:44:15 · 1996 阅读 · 0 评论 -
模仿的智能指针的一个简单实现
boost的智能指针特别强大,特别是 shared_ptr 和 weak_ptr这几天看来下源代码,没多大理解,查了点资料,顺着自己理解的部分,实现了个简单的智能指针,还木有实现线程安全,效率也没有boost的高。下面是代码//SmartPtr.h#pragma once#include namespace cc{ class SmartPtrBase {原创 2013-06-18 13:08:22 · 2297 阅读 · 0 评论 -
C++实现的一个资源互斥锁
经常想写一点小代码给自己用。在封装的时候,一些资源例如 std::stringstream 总想多次重复使用。但是在局部代码区域的静态变量在多线程环境下存在不明显的安全问题。所以实现了一个简单的资源锁。实现共享读,独占写的简单功能。带有测试demo直接上代码:ReadWriteLock.h:#pragma once#ifndef _MFC_VER#include #endif原创 2013-08-26 20:25:13 · 6664 阅读 · 0 评论 -
解决MFC中CListCtrl(virtual)控件闪烁问题
文章之前,先对虚拟列表t控件做一个简单总结:1,在资源中右键点击控件,找到【Owner Data】选择true2,在列表控件的父窗口的类(例如对话框类)中添加 LVN_GETDISPINFO 消息,或者在派生的控件类(CMyListCtrl)中映射 LVN_GETDISPINFO 消息3,在消息响应函数里面写上: LV_DISPINFO* pDispInfo = (LV_原创 2013-09-11 20:25:07 · 6198 阅读 · 4 评论 -
【动态规划】买票找零
水题一道,但是感觉起来挺有意思的。一场激烈足球赛即将开始,售票员紧张地卖票着……。每张球票50元,现在有2n(1)个球迷排队购票,其中n个手持50元钞票,另外n个手持100元钞票。假设开始售票时售票处没有零钱可以找零。问这2n个人有多少种排队方式,不至使售票处出现找不出零的局面?例如当n=3时,共6人,3人持50元,3人持100元。可以找零的排队方式有如下5种:50 50 50原创 2013-10-10 10:18:55 · 3181 阅读 · 2 评论 -
【动态规划】不能移动的石子合并
不能移动的石子合并 做如下两个模型的石子合并,如下模型石子都不能移动出列,且合并都仅发生在相邻两堆石子中: (1)第一个模型:一行排列且相邻合并有n堆石子形成一行(a1,a2,…,an,ai为第i堆石子个数),相邻两堆可合并,合并的分值为新堆的石子数。求合并为一堆的最低得分和最高得分。 (2)第二个模型:一圈排列且相邻合并有n堆石子形成首位相连的一个环形(a1,a2原创 2013-10-10 10:43:48 · 3510 阅读 · 0 评论 -
[C++]assert的加强版——Ensure的简易实现
原文:http://www.cnblogs.com/cbscan/archive/2012/10/26/2740838.html刘未鹏牛最近的一篇文章“C++11和快速迭代开发”中,提到一个小工具Ensure,很有用,但他不方便提供具体代码,这里我给出一个简易实现。 Ensure用法如:ENSURE(0 断言失败时,会打印:Failed: 0 <= in转载 2014-01-06 02:23:34 · 2822 阅读 · 0 评论 -
发布一个VS2008下wxWidgets应用程序向导
由于每次创建wxWidgets工程都要手工添加依赖的lib和设定附加搜索目录,太麻烦了,然后自己鼓捣,弄成了一个向导。以下是安装方法:注意:此向导只保证x86下VS2008+wxWidgets-2.9.4下能正常工作 安装前请先定义环境变量wxWin,使其指向你的wxWidgets目录,例如:%wxWin%=D:\wxWidgets-2.9.4假设VS2008安装原创 2012-09-20 18:45:14 · 1964 阅读 · 0 评论 -
高内聚,低耦合的概念剖析
原文链接:http://www.cnblogs.com/xiaopin/archive/2010/08/27/1809928.html1. 概念 内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事。它描述的是模块内的功能联系; 耦合是软件结构中各模块之间相互连接的一种度量,耦合强弱取决于模块间接口的复杂程度、进入或访问一转载 2012-08-22 23:34:36 · 5644 阅读 · 0 评论 -
机器翻译 (NOIP2010)复赛 提高组 试题一 解题代码
机器翻译 (NOIP2010)复赛 提高组 试题一 解题代码原创 2011-07-23 18:53:46 · 4987 阅读 · 0 评论 -
全国信息学奥林匹克联赛(NOIP2010)复赛 题目
一.题目概况中文题目名称机器翻译乌龟棋关押罪犯引水入城英文题目与子目录名translatetortoiseprisonflow可执行文件名translatetortoiseprisonflow输入文件名translate.intortoise.inprison.inflow.in原创 2011-07-23 18:51:00 · 5798 阅读 · 0 评论 -
乌龟棋 (NOIP2010)复赛 提高组 试题二 解题代码
/*全国信息学奥林匹克联赛(NOIP2010)复赛 提高组 第二题【问题描述】小明过生日的时候,爸爸送给他一副乌龟棋当作礼物。乌龟棋的棋盘是一行N 个格子,每个格子上一个分数(非负整数)。棋盘第1 格是唯一的起点,第N 格是终点,游戏要求玩家控制一个乌龟棋子从原创 2011-07-23 18:56:32 · 2753 阅读 · 5 评论 -
【冒泡+选择】排序及三种排序速度比较
#include #include #include using namespace std;#define MAX_CNT 20000int Array1[MAX_CNT],Array2[MAX_CNT],Array3[MAX_CNT];int intcmp(const void* a,const void* b){ return *(int*)a - *(int*)b;原创 2011-11-19 21:24:09 · 934 阅读 · 0 评论 -
关押罪犯 (NOIP2010)复赛 提高组 试题三 解题代码
点此查看题目#include #include #define DEBUG#ifndef DEBUG#define N_MAX (2000+1)#define M_MAX (10000+1)#else#define N_MAX (5+1)#define M_MAX (10+1)#endifint g_iEffectOut = 0;int g_iCrimeNum =原创 2011-07-23 19:06:41 · 3683 阅读 · 0 评论 -
C方式实现C++纯虚函数
前几天看URLDownloadToFile 时发现最后一个参数是一个类指针(我更喜欢说是委托),它提供C的导出接口,但是 C是无法实现纯虚函数的,这样的话运行会崩溃。然后自己捉摸了下,构造了个虚函数列表,成功调用。写此文章以记录之#include #include //URLDownloadToFileA原型中最后的一个参数是回调类指针,类似委托机制的delegate//URLDownlo原创 2012-06-09 13:46:53 · 2966 阅读 · 0 评论 -
基于委托机制的(目录)文件遍历
这个示例程序基本实现了Dir命令的行为,但是是使用了ObjectiveC的委托机制,思想是不错的,共享之以后需要用到可以直接拿来用,因为委托机制真的很不错//////////////////////////////////////////////////////////////////////////// 文件名:EnumFile.h// 工程名:EnumFile// 作 者:cc原创 2012-06-09 15:50:54 · 920 阅读 · 0 评论 -
C++继承:共有,私有,保护
公有继承(public)、私有继承(private)、保护继承(protected)是常用的三种继承方式。1. 公有继承(public)公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的,不能被这个派生类的子类所访问。2. 私有继承(private)私有继承的特点是基类的公有成员和保护成员都作为派生类的私有转载 2012-07-05 10:26:54 · 646 阅读 · 0 评论 -
fstream的使用方法介绍
在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符:1、插入器( 向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout2、析取器(>>) 从流中输入数据。比如说系统有一个默认的标准输入流(cin),一般情况下就是指的键盘,所以转载 2012-07-03 21:04:46 · 821 阅读 · 0 评论 -
C++的类型转换符:static_cast、const_case、dynamic_cast
dynamic_cast:通常在基类和派生类之间转换,使用到RTTI(Runtime Type Information)在运行时判断转换是否正确,如不正确将抛出异常。 const_cast:主要针对const和volatile的转换. static_cast:一般用于基本数据类型之间的转换转换,no run-time check,编译时判断。 reinterpret_cast:转载 2012-07-12 16:52:22 · 5197 阅读 · 0 评论 -
三十分钟掌握STL
三十分钟掌握STL这是本小人书。原名是《using stl》,不知道是谁写的。不过我倒觉得很有趣,所以化了两个晚上把它翻译出来。我没有对翻译出来的内容校验过。如果你没法在三十分钟内觉得有所收获,那么赶紧扔了它。文中我省略了很多东西。心疼那,浪费我两个晚上。译者:karycontact:karymay@163.netSTL概述STL的一个重要特点是数据结构和算法的分离。尽转载 2012-07-19 02:23:40 · 820 阅读 · 0 评论 -
MFC列表控件 (CListCtrl) 的删除多行
在网上搜索了下,结果不怎么理想,很多类似的答案:POSITION pos = pList-> GetFirstSelectedItemPosition(); if (pos == NULL) TRACE0( "No items were selected!\n "); else { while (pos)原创 2012-08-08 09:31:25 · 4466 阅读 · 0 评论 -
解决VS2008 无法解析的外部符号 "int __cdecl _AfxInitManaged(void)“,以及无法打开预编译头Debug\XXX.pch
今天移动了下项目里面的文件目录,为了方便在工程里面重新添加移动了的文件,我把全部文件移除出了工程,然后在添加回来,重新按F7 组建,结果说vc90.idb vc90.pdb两个文件无效。于是我删除了Debug目录,重新F7这次得到的是一大堆的 【无法打开预编译头 Debug\XXX.pch】百度找了一下,很多文章说什么取消使用预编译头,愚以为,实不敢苟同,但是我在工程属性中打开原创 2012-08-09 17:12:09 · 8842 阅读 · 3 评论 -
CPP的接口非虚原则(NVI)
这段时间翻设计思想类的书发现,上面都提到,C++对象模型中,接口跟虚函数,二者只能选其一,就是说,要么一个公有方法是非虚的,要么一个私有方法是虚的,不建议出现公有的虚函数,如果要这样建议写个公有转接口,转发调用到私有的函数中去。以下是参考资料:对于常规的基类函数来说:1 尽量使用非虚拟接口模式(NVI)让接口函数成为非虚拟的。2 尽量让虚函数成为私用的。3 只有当派生类需要调用基类原创 2012-08-06 09:44:27 · 2364 阅读 · 0 评论 -
vs2008 配置 wxWidgets-2.9.4
一直喜欢体验各种开源的库,既可以从中学习人家的代码是怎么写的,也可以体会下别人的编程思想。因为个人经常在Mac,Windows,Ubuntu平台转,深深被codeblocks折服:跨平台还能做得那么强大。据说用的是wsWidgets,然后就到官网下载了一个(Latest DevelopmentRelease:2.9.4)。由于之前安装时没有将过程记录下来,这里只能凭印象将过程说一下:1,原创 2012-09-16 22:19:06 · 2432 阅读 · 0 评论