C\C++代码优化的27个建议

1. 记住阿姆达尔定律: funccost是函数func运行时间百分比,funcspeedup是你优化函数的运行的系数。所以,如果你优化了函数TriangleIntersect执行40%的运行时间,使它运行快了近两倍,而你的程序会运行快25%。这意味着不经常使用的代码不需要做较多优化考虑...

2014-05-23 08:36:05

阅读数:619

评论数:0

PIMPL IDIOM简介

一 简介 今天阅读《C++ API设计》一书,设计到了PIMPL IDIOM,于是研究了一下。 PIMPL IDIOM是由JeffSumner首次提出的概念,意为“pointertoimplementation”,即指向实现的指针。这是一种用来隐藏源代码头文件实现细节的方法,可以保持API...

2013-10-29 17:52:39

阅读数:2580

评论数:0

memcpy源码

一直以来知道memcpy函数有问题,没有处理内存重叠的情况;而memmove函数对这种情况进行了处理。今天碰巧有同事问到,特地翻了一下源码,了解一下实现方法,大体如下: void *memcpy(void *dst, const void *src, size_t len) { if(NU...

2013-09-23 22:05:32

阅读数:8536

评论数:5

状态机统计单词个数

使用状态机解决问题,主要有两个步骤: 1、确定系统总共有几个状态 2、确定状态之间的迁移过程 对于统计字符串来说,总共有四种状态:初始状态、单词状态、空格状态、结束状态 四种状态之间的迁移如下: 初始状态:如果输入是字符,那么进入单词状态,同时单词个数加一;如果是空格,则进入空格...

2013-06-27 17:59:06

阅读数:1126

评论数:0

链表常见面试题

一、头文件 #ifndef LISTUTILS_H #define LISTUTILS_H typedef int ElemType; typedef struct _node { ElemType data; struct _node *next; } Node; /* ...

2013-05-09 22:19:51

阅读数:700

评论数:0

桶式排序

桶式排序是一种常见的排序方法,其定义如下: 如果我们有N个整数,范围从1到M(或从0到M-1),我们可以利用这个信息得到一种快速的排序,叫做桶式排序(bucket sort)。我们留置一个数组,称之为Count,大小为M,并初始化为零。于是,Count有M个单元(或桶),开始时他们都是空的。当数...

2013-03-29 13:22:16

阅读数:844

评论数:0

Managed, Unmanaged,Native

Managed, Unmanaged,Native: What Kind of Code Is This? With the release ofVisual Studio .NET 2003 (formerly known as Everett) on April 24th,many deve...

2013-03-01 13:55:23

阅读数:496

评论数:0

C++之dynamic_cast

在C++中,dynamic_cast主要用于在继承体系中进行“下行转换”, 即将父类的引用或指针转换为子类的引用或指针。根据其参数的不同,其结果有两种。 一、对指针进行转换。如果转换失败,其返回NULL。 T1 obj; T2* pObj = dynamic_cast(&obj);...

2013-02-25 11:24:15

阅读数:400

评论数:0

关于左值与右值(lvalue & rvalue)

Lvalues and Rvalues Dan Saks JUNE 1, 2001 inShare1 C and C++ enforce subtle differences on the expressions ...

2013-02-21 11:20:24

阅读数:1063

评论数:0

c++之shared_ptr

Collecting Shared Objects By Herb Sutter and Jim Hyslop, August 01, 2004 1 Comment shared_ptr is becoming widely available and added to the Stan...

2013-02-19 16:25:53

阅读数:1297

评论数:0

C++之函数指针

[33.1] Is the type of "pointer-to-member-function" different from "pointer-to-function"? Yep. Consider the following function...

2013-02-18 20:28:48

阅读数:540

评论数:0

动态规划基本问题

一、连续子数组最大和问题 #include #include using namespace std; int MaxSumArray(const int *arr, const unsigned int len, unsigned int *start, unsigned int *e...

2013-01-21 16:24:42

阅读数:615

评论数:0

linux下一个内存池实现

memory_pool.h #ifndef _MEMORY_POOL_H_ #define _MEMORY_POOL_H_ #ifdef __cplusplus namespace mem_pool { extern "C" { #endif /*Pool'...

2013-01-02 14:08:42

阅读数:683

评论数:0

STL algorithm之copy

定义: template OutputIterator copy ( InputIterator first, InputIterator last, OutputIterator result ); 作用: 将[first, last)范围的元素,拷贝到以result开始的范围内。类似于...

2012-12-30 19:54:00

阅读数:1223

评论数:0

STL algorithm之binary_search

定义: template bool binary_search ( ForwardIterator first, ForwardIterator last, const T& value ); template bool binary_search ( ForwardIterato...

2012-12-30 19:34:41

阅读数:562

评论数:0

再谈C/C++中的extern “C”

众所周知, C语言头文件中的extern “C”的作用是为了让C++编译器能够调用C编译器产生的二进制代码。由于C++支持函数重载等原因,C++和C编译器产生二进制代码中的函数名字是不一样的。不过,如果直接使用C++编译器来编译带有extern “C”的源代码,生成的代码能直接为C代码使用吗?...

2012-12-28 10:51:02

阅读数:511

评论数:0

JSON

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language,Standard ECMA-262 3rd Edition - December 19...

2012-12-12 21:41:35

阅读数:546

评论数:0

bmp文件源码

#include #include #include #ifndef WIN32 #define BI_RGB 0L #pragma pack(1) typedef struct tagBITMAPINFOHEADER{ unsigned long biSize...

2012-11-10 21:20:26

阅读数:559

评论数:0

GCC attribute mechanism

refer to GCC manual: 1.Function attributes: 6.30 2.Variable attributes: 6.36 3.Type attributes: 6.37

2012-11-09 13:33:46

阅读数:515

评论数:0

字符编码格式

1. ASCII码     我们知道,在计算机内部,所有的信息最终都表示为一个由多个二进制位组成的串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出2^8=256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态...

2012-09-13 09:50:20

阅读数:1376

评论数:0

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