
C/C++
文章平均质量分 54
miechalzhao
这个作者很懒,什么都没留下…
展开
-
全排列算法c++实现
问题:Given a collection of numbers, return all possible permutations.For example,[1,2,3] have the following permutations:[1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], and [3,2,1].Solution:#incl原创 2012-11-21 18:45:39 · 2091 阅读 · 0 评论 -
动态数组对比STL vector及其实现(c/c++)
c/c++动态数组动态数组 顾名思义能 动态增加内存的数组。 STL标准库中的vector具有类似的功能,c标准库的realloc也具有类似的功能,那为何还需要自己实现动态内存方式呢?对于追求效率,和有重要性能需求的我们来说,实现动态数组能让我们的程序运行的更有效率,下面分别谈一下vector 和realloc.1.vector再STL标准库的实现当中,vector内存不够时,会动态的原创 2012-11-20 11:29:03 · 7606 阅读 · 0 评论 -
计算机日期
//此程序还有一个Bug,若在新西兰由于其地理位置的特点,所以导致无法正确得到系统时间。#include#include#includeint main(){ system("color 4f"); time_t biggest=0x7FFFFFFF; printf("biggest=%s/n",asctime(gmtime(&biggest))); retur原创 2009-11-18 22:33:00 · 1011 阅读 · 0 评论 -
跨平台线程池实现
本线程池的作用是管理阻塞的网络操作函数的调用...每次网络操作调用都加入到线程池当中,然后线程回调函数执行 取任务的操作并执行这次任务。 线程池的设计 将线程池的所有操作都封装在类中...外界使用的话只需要new 一个这个线程池对象。 1.加任务函数 2.取任务函数 3.初始化线程池 4.销毁线程池 线程池的实现 实现跨原创 2011-10-14 18:04:24 · 2750 阅读 · 1 评论 -
android JNI c/c++调用java 无需新建虚拟机
http://blog.youkuaiyun.com/typename/article/details/6729592近期通过研究SDL源码 得出android JNI c/c++调用java 无需新建虚拟机: 具体步骤如下第一步获得:两个参数 JNIEnv和jclassv原创 2011-08-29 17:33:18 · 3832 阅读 · 0 评论 -
Webkit RefPtr and PassRefPtr Basic
RefPtr and PassRefPtr Basics历史:在webkit当中很多对象是使用引用计数方式。这种方式的实现是通过每个类当中拥有ref和deref成员函数用来递增和减小引用计数。每一个ref方法调用和deref相对应。当引用计数变为0时,这个对象就会被delete。在webkit当中的很多类实现这种模式的方法是继承RefCounted类模板。回到2005年,我们发现有翻译 2013-08-07 23:05:22 · 2680 阅读 · 0 评论 -
一道有趣的GOOGLE算法题
问题描述:一个大小为n的数组,里面的数都属于范围[0, n-1],有不确定的重复元素,找到至少一个重复元素,要求O(1)空间和O(n)时间。如果没有时间,空间的要求,那解法会相当的多,hash table,STL当中的set等都可以很方便的解决。网上大多的解法是基于基数排序,还有标记法。本人由于兴趣,采用交换标记法,代码如下:#include#includebool Rep原创 2012-12-01 23:01:28 · 2844 阅读 · 0 评论 -
图片加密解密程序
原创程序,若要转载,请标明转载出处....谢谢! #include#include#include#include#define WIDTHBYTES(bits) (((bits)+31)/32*4)typedef unsigned char BYTE;typedef unsigned short WORD;typedef unsigned long DWORD;原创 2010-03-29 17:37:00 · 3083 阅读 · 3 评论 -
双向链表Class-template
//double LinkList implement with C++ template#includeusing namespace std;/*templateclass DBListADT{ public: virtual void Append(const Type &)=0; virt原创 2011-01-01 20:28:00 · 1609 阅读 · 0 评论 -
图片加密解密程序2
#include#include#include#includetypedef unsigned char BYTE;typedef unsigned short WORD;void ECBencrypto(char *in_fname,char *password,char *out_fname);void CBCencrypto(char *in_fname,c原创 2010-04-03 16:58:00 · 1979 阅读 · 1 评论 -
Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/g++-4.2 failed with exit cod
使用xcode编译出错Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/g++-4.2 failed with exit code 1在网上找了好久,解释有各种原因,但是大多都是说重定义原创 2011-07-12 15:23:47 · 6611 阅读 · 1 评论 -
编译原理(递归下降分析程序)
#include#include#includeusing namespace std;int i=0;string nexttoken;char ch;void A();void A1();void read(){ ch= nexttoken[++i];}void error(){ cout不是本文法的句型!原创 2009-11-11 19:10:00 · 3106 阅读 · 0 评论 -
GPROF(性能监视工具)使用详解
gprof使用详细介绍 linux下c/c++编程2008-11-03 16:11gprof介绍gprof是GNU profiler工具。可以显示程序运行的“flat profile”,包括每个函数的调用次数,每个函数消耗的处理器时间。也可以显示“调用图”,包括函数的调用关系,每个函数调用花费了多少时间。还可以显示“注释的源代码”,是程序源代码的一个复本,标记有程序中每原创 2010-05-17 00:08:00 · 4096 阅读 · 0 评论 -
强指针和弱指针
在Android的源代码中,经常会看到形如:sp、wp这样的类型定义,这其实是Android中的智能指针。智能指针是C++中的一个概念,通过基于引用计数的方法,解决对象的自动释放的问题。在C++编程中,有两个很让人头痛的问题:一是忘记释放动态申请的对象从而造成内存泄露;二是对象在一个地方释放后,又在别的地方被使用,从而引起内存访问错误。程序员往往需要花费很大精力进行精心设计,以避免这些问题的出现。原创 2010-08-13 09:04:00 · 18705 阅读 · 5 评论 -
15个常用的gcc 命令选项
GCC编译器非常强大 ,在各个发行的linux系统中都非常流行,本文介绍的是一些常用的gcc编译选项下面这段代码将回围绕整个文章:编辑main.c如下.#includeint main(void){ printf("\n The Geek Stuff\n"); return 0;}GCC编译选项1.指定输出可执行文件的名字使用最基本的gcc编译格翻译 2012-11-18 22:41:34 · 31421 阅读 · 3 评论 -
terminate called throwing an exception" SIGABRT UIApplicationMain
问题:启动程序直接挂在UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));并且控制台和堆栈只显示main和UIApplicationMain.解决方法:1.首先排除由于iOS SDK最新版的兼容问题,如果是SDK问题,那直接修改SDK版本。2.针对这种情况,没有多余的有用信息,原创 2012-11-15 18:00:40 · 3323 阅读 · 0 评论 -
“expected unqualified-id before numeric constant ”
<br />linux gcc 编译出错 “expected unqualified-id before numeric constant ”<br />原因很可能是所有大写的名字常常被用于预处理宏, <br />不尊重命名空间范围,所以即使你在自己的命名空间上定义也会产生冲突。<br />可以采用条件编译来测试你所定义的常量是否已被定义。<br />#ifdef XXX<br /> code <br />#endif<br /> 因此这样的名称应 一般应避免的一切。<br />例:<br />原原创 2011-04-23 17:02:00 · 26004 阅读 · 1 评论 -
Linux和windows临界区
1.声明#ifdef _LINUXpthread_mutex_t mutex_lock;#endif#ifdef WIN32CRITICAL_SECTION mutex_lock;#endif2.初始化#ifdef _LINUX pthread_mutex_init(&mutex_lock, NULL);#endif#ifdef WIN3原创 2011-06-17 16:40:00 · 8964 阅读 · 0 评论 -
Command line error D8021: invalid numeric argument '/Wno-deprecated
使用visual studio 2008编译项目,出错 Command line error D8021: invalid numeric argument '/Wno-deprecated 解决方法:在工具栏上选择 project ->properties-原创 2011-07-13 12:17:32 · 12111 阅读 · 3 评论 -
error LNK2001: unresolved external symbol "public: __thiscall
VC中编译 连接出错... error LNK2001: unresolved external symbol "public: __thiscall 提示找不到源文件的实现部分...可能是在源文件中加了 #ifndef win32 ...#endif在连接时候找不到实现的地原创 2011-07-27 16:35:10 · 6977 阅读 · 0 评论 -
error can't allocate region
error can't allocate region 程序运行报错,在xcode中则会发出“SIGABRT”信号来终止程序。原因是程序运行内存不足,欲申请空间得不到分配。此时可以查找程序是否出现程序一直申请内存,出现死循环.SIGABRT 程序自己发现错误并调用ab原创 2011-08-10 14:32:51 · 11743 阅读 · 0 评论 -
forward declarations in c++
c++中的前置声明,只对该类的指针,SmartPtr)有效。如果要继承这个一个雷类,则必须包含这个类的定义部分。否则编译就会报错forward declarations of "XXXX".例子:example1:class A :pubilc B{};这时候需要include 类B的定义。example2:class B;//前置声明SMART_PTR(B);原创 2011-11-18 15:36:39 · 2897 阅读 · 0 评论 -
C 检测内存泄露
介绍:当程序员在堆上分配内存,忘了释放或者释放失败所申请的内存,内存泄露就随之出现,其一直是C代码 bug 的一部分。大多数程序员使用第三方库来检测自己的代码,其实可以在我们自己的程序上编写简单的代码来检测内存泄露,这样可以使得程序减少库的依赖。在C语言中申请内存通常使用malloc()和calloc(),释放的时候使用free()。有时候我们会忘记释放内存。下面介绍一下一个简单的方法检测程序翻译 2011-12-09 22:50:22 · 7006 阅读 · 4 评论 -
c++ class does not name a type
declare class does not name a type出现这个编译错误主要有四个可能原因,现总结如下:1.引用的类命名空间未包含2.引用的类头文件未包含3.包含了头文件,或者已经前置声明了,则说明所引用的类名写错。4.循环引用头文件前置声明要素:1.前置声明需要注意以上提到的四点2.尽可能的采用前置声明(做到只有包含继承类的头文件)3.使用前置声明原创 2012-01-03 21:26:34 · 129474 阅读 · 2 评论 -
Amf3协议分析与实现
前沿: AMF(Action Message Format)是一种 二进制格式数据型态,AMF协议基于HTTP,将flash客户端数据编码后传回server,server端的remoting adaptor接收到数据后则会解码回正确的native对象,交给正确的程序处理,并以同样的数据组织方式响应客户端。AMF3相比较AMF0编码时经过高度压缩,因此非常适合用来传递大量的数据,根据fl原创 2011-12-10 14:28:21 · 22719 阅读 · 7 评论 -
c/c++ undefined reference to ‘funtion name'
undefined reference to `function name' 意思已经表达很清楚了,程序在链接的时候找不到这个函数的定义,如果这个函数是第三方的库的话, 需要检查是否在程序中导入了这个库的静态库,或者动态库, windows .lib,.dll, linux .a .sowindows上需要在工程设置上加上 库的搜索路径==linux 如果是 ./configure原创 2012-05-16 13:00:15 · 2974 阅读 · 0 评论 -
memcpy的威力
有时候采用memcpy可以使程序的效率提高很多,有时候也会拖延程序的运行时间。对于c/c++内置类型建议不宜采用memcpy作为拷贝方式,可以直接操作其地址来达到赋值效果。比如将int 类型的数值拷贝到一段buffer当中,可以直接采用赋值方式example:uint8_t *buffer=new uint8_t[1024];int sendLength=100;*(int*)buff原创 2012-01-28 21:27:12 · 7890 阅读 · 1 评论 -
android ndk not support pthread_cancel
转载请注明: http://blog.youkuaiyun.com/typename/article/details/7794958下面是google关于这个问题的说法:Try changing your code so that your threads don't get stuck waitingindefinitely for i/o. For example used condit原创 2012-08-05 02:38:17 · 8632 阅读 · 2 评论 -
C语言不同增值语句区别
i++;++i;i +=1;i =i +1;在C语言代码中我们经常看到这样的增值语句,那么到底哪个语句效率最高呢?‘i++’表示取i的地址,把他装入寄存器当中然后增加内存中i的值。'++i'表示增加i的内容把它的值放入寄存器中。i +=1,i=i+1都是赋值操作。在早期编译器当中其被翻译成两条指令,因此大家会认为这样的效率底下。但在现代编译器中gcc,vc等区别已然原创 2012-10-03 10:53:45 · 2442 阅读 · 0 评论 -
编译原理(预测分析法)
#include #include #include #include#define MAXSIZE 100typedef struct //定义顺序栈{ int data[MAXSIZE]; int top;//栈顶指针}SeqStack;SeqStack *s;//定义一个指向顺序栈的指针变量void Scaner();//词法分析扫描函数vo原创 2009-11-12 21:51:00 · 3664 阅读 · 12 评论 -
编译原理(词法分析程序)
#include #include #include #includevoid Scaner();//词法分析扫描函数int IsRetainLetters(char *ch);//判断是否为保留字char * DecimalToBinary(char *buf);//十进制转二进制函数char GetCh(FILE *fp);//读取文件中的字符,每次只读取一个字原创 2009-11-11 19:18:00 · 2209 阅读 · 0 评论 -
NSString 与C++ string字符串的互转
1. string 转换为 NSString std::string str("hello"); NSString *str=[NSString stringWithString:str.c_str()]; NSString *istr=[NSString stringWithString:@"zsh"]; str=[istr cStringUs原创 2011-08-29 17:50:40 · 38648 阅读 · 2 评论