
c/c++
文章平均质量分 56
普通网友
这个作者很懒,什么都没留下…
展开
-
只用位运算交换两个数
异或运算:相同为0,不同为1a = a^b;b = a^b;a = a^b;转载 2014-03-15 10:27:20 · 696 阅读 · 0 评论 -
创建模式之抽象工厂Abstract Factory
此模式相对比较简单,是简单的原创 2014-06-12 15:15:04 · 276 阅读 · 0 评论 -
提高编程能力的7条建议
编程是非常酷的一件事情,但是在酷炫的背后它对很多人来说还是挺难的。很多人在学习编程之初就被困难击败了。 当你不熟悉编程的时候,你可能会觉得无从下手,并且不知道如何运用学到的知识。只要你通过了这一困难的学习阶段,你就会发现一个全新的世界。 以下是一些能够帮助你快速提高编程技巧的建议。 1. 多写代码 学习某件事情最好的办法就是练习。你应该花大量时间转载 2014-05-29 13:31:40 · 582 阅读 · 0 评论 -
设计模式总结之行为模式总览
行为模式设计到两个方面的内容: 类之间的关系和duixi原创 2014-05-30 10:41:52 · 291 阅读 · 0 评论 -
创建模式之生成器BUILDER
先看结构图:原创 2014-06-12 15:56:43 · 295 阅读 · 0 评论 -
行为模式之命令模式-COMMAND
稍后继续原创 2014-05-31 12:10:52 · 265 阅读 · 0 评论 -
行为模式之观察者-OBSERVER
本文参考书籍:《Design Patterns Elements of Reusable Obje原创 2014-05-30 12:57:56 · 331 阅读 · 0 评论 -
行为模式之职责链-CHAIN OF RESPONSBILITY
应用原创 2014-05-30 23:07:42 · 297 阅读 · 0 评论 -
timer.hpp
class timer{ public: timer() { _start_time = std::clock(); } // postcondition: elapsed()==0// timer( const timer& src ); // post: elapsed()==src.elapsed()// ~time原创 2014-09-02 14:22:34 · 336 阅读 · 0 评论 -
C++ 异常
一、什么是异常处理 一句话:异常处理就是处理程序中的错误。二、为什么需要异常处理,以及异常处理的基本思想 C++之父Bjarne Stroustrup在《The C++ Programming Language》中讲到:一个库的作者可以检测出发生了运行时错误,但一般不知道怎样去处理它们(因为和用户具体的应用有关);另一方面,库的用户知道怎样处理这转载 2014-12-08 14:29:39 · 669 阅读 · 0 评论 -
GUID生成
windows下使用微软guidgen.exe//--生成GUID的代码//--相关程序/微软guidgen.exe#include "stdafx.h"#include #include //--生成GUIDconst char* newGUID(){ static char buf[64] = {0}; GUID guid; if (S_OK == ::CoCrea转载 2014-12-29 13:54:16 · 540 阅读 · 0 评论 -
strncpy_s、_strncpy_s_l、wcsncpy_s、_wcsncpy_s_l、_mbsncpy_s、_mbsncpy_s_l
将一个字符串的字符复制给另一个。strncpy、_strncpy_l、wcsncpy、_wcsncpy_l、_mbsncpy、_mbsncpy_l 的这些版本如 CRT 中的安全功能 所述,其安全得到了增强。 重要事项_mbsncpy_s 和 _mbsncpy_s_l 不能在 Windows 运行时中执行的应用程序中使用。 有关详细信息,请参见 CR转载 2014-12-12 17:43:29 · 3603 阅读 · 0 评论 -
C++ 中wchar_t范围来判断其是否是中文,数字还是其他
下面是各语言在Unicode中的范围:0000:Basic Latin 基本拉丁语0080:Latin-1 Supplement 拉丁语-1补遗0100:Latin Extended-A 拉丁语扩充-A0180:Latin Extended-B 拉丁语扩充-B0250:IPA Extensions 国际音标02B0:Spacing Modifier Letter原创 2015-03-11 11:20:28 · 3851 阅读 · 0 评论 -
设计模式之创建型:抽象工厂和生成器的混合使用
#pragma once#include #include namespace MazeSite{//====================================================================================================================/// /// 方向, 依次是: 北,原创 2014-06-12 11:37:57 · 341 阅读 · 0 评论 -
设计模式中的委托形式
委托():是一种组合方式原创 2014-06-12 17:55:29 · 403 阅读 · 0 评论 -
c++关键字之 const
1. 最初的用途: 代替预编译指令 #define,可以缩小程序size,从而节省载入到内存运行时的内存开销。举例:(网上的例子多半都是CV党,不懂的人看了会更加不懂,更怕C++)百度百科给的例子就是错的,或者说不恰当的,解释的方法不对。比如:/--------------------------------------------------------define--------转载 2014-05-13 10:19:55 · 524 阅读 · 0 评论 -
获取系统的时钟数
__declspec (naked) unsigned __int64 GetCpuCycle( void ){ _asm { rdtsc ret }}原创 2014-05-13 09:59:29 · 1012 阅读 · 0 评论 -
declspec(naked) 编写干净函数
void __declspec(naked) MyNakedFunction(){strcmp(...);// __cdecl 函数是调用者清除参数堆栈,对于非内联汇编调用这类函数,编译器将自动平衡堆栈,加入 ADD ESP, 8}转载 2014-05-13 09:50:10 · 733 阅读 · 0 评论 -
解决VS2010升级SP1后出现的warning C4005问题
一些程序在使用VS2010时编译一切正常,前几天升级了VS2010的SP1,结果发现原先正常的程序报错了,错误信息如下: 3>c:\program files (x86)\microsoft visual studio 10.0\vc\include\stdint.h(76): warning C4005: 'INT8_MAX' : macro redefinition3>转载 2014-03-28 10:03:37 · 1230 阅读 · 0 评论 -
windows下的_mkdir 和 linux下的mkdir
需要注意的是 windows下的_mkdir()只需要一个路径的参数,而linux下的mkdir()需要两个参数,第一个是路径,第二个是权限。以下是linux下的mkdir的讲解:NAMEmkdir - make a directorySYNOPSIS#include sys/stat.h>int mkdir(const char *path, mode_t转载 2014-05-13 15:55:25 · 7039 阅读 · 0 评论 -
c++钻石-菱形继承
在C++中,什么叫做钻石问题(也可以叫菱形继承问题),怎么避免它?下面的图表可以用来解释钻石问题。假设我们有类B和类C,它们都继承了相同的类A。另外我们还有类D,类D通过多重继承机制继承了类B和类C。因为上述图表的形状类似于钻石(或者菱形),因此这个问题被形象地称为钻石问题(菱形继承问题)。现在,我们将上面的图转载 2014-05-22 20:11:10 · 957 阅读 · 0 评论 -
Unix/Linux编程日期时间汇编
Unix/Linux 时间类型Unix/Linux下有以下几种时间结构:1、time_t 类型:长整型,一般用来表示从1970-01-01 00:00:00时以来的秒数,精确度:秒;由函数time()获取; 该类型定义在头文件 /usr/include/sys/time.h 中: #define _TIME_T typedef long ti转载 2014-05-22 20:15:40 · 521 阅读 · 0 评论 -
使用VS从DLL中产生LIB文件
Generate a .lib from a DLL with visual studio翻译 2014-05-23 09:09:43 · 736 阅读 · 0 评论 -
Windows下日期时间编程简单总结
Windows下日期时间编程简单总结转载 2014-05-22 20:14:27 · 601 阅读 · 0 评论 -
C\C++代码优化的27个建议
本文由 伯乐在线 - 周昌鸿 翻译自 cs.clemson.edu。欢迎加入技术翻译小组。转载请参见文章末尾处的要求。1. 记住阿姆达尔定律:funccost是函数func运行时间百分比,funcspeedup是你优化函数的运行的系数。所以,如果你优化了函数TriangleIntersect执行40%的运行时间,使它运行快了近两倍,而你的程序会运行快25%。这意味着不经转载 2014-05-26 10:24:42 · 685 阅读 · 0 评论 -
最丑陋的C语言特性:tgmath.h
是一个在C99引入的,标准C语言库提供的头文件。对于Fortran编写的数值软件,它向C语言提供更加简洁的接口。跟C语言不同,Fortran提供了编写在该语言内部的“固有函数”,其表现得更像操作符一样。固有函数接受不同类型的参数,并根据参数的类型返回对应类型的返回值。同时,Fortran中的普通函数(“外部函数”)的行为跟C语言中的函数类似,对类型要求严格(即函数参数的类型必须符合,返回值转载 2014-05-26 10:37:24 · 808 阅读 · 0 评论 -
C++11 中的线程、锁和条件变量
线程类std::thread代表一个可执行线程,使用时必须包含头文件。std::thread可以和普通函数,匿名函数和仿函数(一个实现了operator()函数的类)一同使用。另外,它允许向线程函数传递任意数量的参数。1234567891011121314转载 2014-05-26 10:40:38 · 814 阅读 · 0 评论 -
linux源码中关于内存移动或复制的函数详细解说: memmove, memcpy, strcpy
本文讨论的是关于内存复制中内存重叠和不重叠的情况:memmove/*** memmove - Copy one area of memory to another* @dest: Where to copy to* @src: Where to copy from* @count: The size of the area.** Unlike memcpy(), mem原创 2015-04-19 11:33:59 · 2275 阅读 · 0 评论