
C / C++
MrSimp1e
这个作者很懒,什么都没留下…
展开
-
STL中map用法详解
由于STL是一个统一的整体,map的很多用法都和STL中其它的东 西结合在一起;map中由于它内部有序,由红黑树保证,因此很多函数执行的时间复杂度都是log2N的,如果用map函数可以实现的功能,而STL Algorithm也可以完成该功能,建议用map自带函数,效率高一些……Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能转载 2012-04-06 12:46:16 · 2057 阅读 · 0 评论 -
C语言中的宏定义
1. 简单宏定义简单的宏定义有如下格式:[#define指令(简单的宏)] #define 标识符替换列表替换列表是一系列的C语言记号,包括标识符、关键字、数、字符常量、字符串字面量、运算符和标点符号。当预处理器遇到一个宏定义时,会做一个 “标识符”代表“替换列表”的记录。在文件后面的内容中,不管标识符在任何位置出现,预处理器都会用替换列表代替它。转载 2013-05-24 11:10:39 · 2870 阅读 · 0 评论 -
C++ DELETE 操作
在C++中delete指针前不用进行指针是否为空的判断,因为delete的实现已经做了这件事情! 使用delete来delete已释放的指针是一个严重的错误,所以要在delete完一个指针后手动把它置空!因为delete空指针是安全的。 以下是Bjarne Stroustrup's C++ Style and Technique FAQ中的 Why does转载 2013-05-24 23:36:48 · 2245 阅读 · 0 评论 -
C语言指针概念全面解析
C语言指针的概念指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。先声明几个指针放着做例子:例一:(1)int*ptr;(2)char*ptr;(3)int**ptr;(4)in转载 2013-05-25 00:16:07 · 1767 阅读 · 0 评论 -
C++类成员和数据成员初始化总结
C++为类中提供类成员的初始化列表。类对象的构造顺序是这样的:1.分配内存,调用构造函数时,隐式/显示的初始化各数据成员2.进入构造函数后在构造函数中执行一般计算 1.类里面的任何成员变量在定义时是不能初始化的。 2.一般的数据成员可以在构造函数中初始化。 3.const数据成员必须在构造函数的初始化列表中初始化。 4.static要在类的定义外面初始化。原创 2013-05-24 22:15:38 · 14428 阅读 · 1 评论 -
C语言中浮点数的比较
使用设定的精度来判断,还不是直接对比 , 如下:float local, first, result ;const float EPSINON = 0.0000001;local = 10.3456783;first = 10.3456894;result = 0.0;result = local - fisrt;if(result > EPSINON) // 两浮点数之差大于原创 2012-06-19 12:50:33 · 2375 阅读 · 0 评论 -
C++拷贝构造函数详解
一. 什么是拷贝构造函数首先对于普通类型的对象来说,它们之间的复制是很简单的,例如:[c-sharp] view plaincopyint a = 100; int b = a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。转载 2013-05-24 23:35:51 · 1372 阅读 · 0 评论 -
详解C++的static_cast、dynamic_cast、reinterpret_cast、和const_cast
关于强制类型转换的问题,很多书都讨论过,写的最详细的是C++ 之父的《C++ 的设计和演化》。最好的解决方法就是不要使用C风格的强制类型转换,而是使用标准C++的类型转换符:static_cast, dynamic_cast。标准C++中有四个类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。下面对它们一一进行介绍。st转载 2013-06-08 16:31:16 · 5598 阅读 · 0 评论 -
C++11中的function和bind
C++11中的function和bind原创 2014-04-23 16:26:14 · 2415 阅读 · 1 评论 -
Lambda Functions in C++11 - the Definitive Guide
One of the most exciting features of C++11 is ability to create lambda functions (sometimes referred to as closures). What does this mean? A lambda function is a function that you can write inline in转载 2014-05-08 11:39:44 · 1756 阅读 · 0 评论 -
C++简单封装pthread
//// CppThread.h// CppThread//// Created by mrsimple on 4/18/14.// Copyright (c) 2014 mrsimple. All rights reserved.//#ifndef __CppThread__CppThread__#define __CppThread__CppThread__#in原创 2014-04-23 16:18:55 · 3465 阅读 · 0 评论 -
C++11中的std::bind与Socket中的bind函数冲突问题
最近在写一些原创 2014-04-22 17:33:41 · 4913 阅读 · 0 评论 -
C语言函数指针
函数指针是指向函数的指针变量。 因而“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整形变量、字符型、数组一样,这里是指向函数。如前所述,C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他类型变量一样,在这些概念上是一致的。函数指针有两个用途:调用函数和做函数的参原创 2012-06-21 11:03:16 · 1604 阅读 · 0 评论 -
利用栈将中缀表达式转换成后缀表达式
目的:将中缀表达式(即标准形式的表达式)转换为后缀式。例子:a+b*c+(d*e+f)*g转换成abc*+de*f+g*+ 转换原则:1.当读到一个操作数时,立即将它放到输出中。操作符则不立即输出,放入栈中。遇到左圆括号也推入栈中。2.如果遇到一个右括号,那么就将栈元素弹出,将符号写出直到遇到一个对应的左括号。但是这个左括号只被弹出,并不输出。转载 2012-12-11 16:33:20 · 2645 阅读 · 1 评论 -
二维数组和二级指针的传递问题
再一次的见证了自己的基础不牢靠。。。幸好发现得早,看见网上说,华为的一个面试题就考了这个方面的。借那道华为的面试题引出问题,题目:char **p, a[16][8]; 问:p=a是否会导致程序在以后出现问题?为什么?可能有一部分朋友会回答正确,这里他们认为,a[]是一级指针,a[][]就是二级指针。那这个到底对不对呢?OK,用事实说话:// Author转载 2012-04-08 17:38:28 · 2594 阅读 · 0 评论 -
函数指针
/************************************************************************//* 函数指针:函数名 就是函数操作代码在内存中的起始地址,就像数组名是数组在内存中的起始地址。所以使用函数指针时,直接传入函数名就Ok了。函数指针也是C中实现多态的一种方法.原创 2012-04-08 17:46:12 · 1209 阅读 · 0 评论 -
三个数求最大数、最小数、中间数
// 获取中间值public static int getMidNum(int a, int b, int c) {return (a c ? b : a > c ? c: a));}// 获取最大值public static int getMaxNum(int a, int b, int c) {return (a }// 获取最小值public s原创 2012-03-22 13:45:04 · 11154 阅读 · 0 评论 -
求一个整数中,二进制数含有1的个数
// 求一个整数中,二进制数含有1的个数#include #include using namespace std;int solusion(int n){ int count = 0 ; while(n) { count++ ; // 实质上是将最右边的1置为0,再按位与,去掉最后一个1,依此类推直到最后一个0 n = n & (n-1) ; }原创 2012-06-19 19:48:52 · 1211 阅读 · 0 评论 -
函数指针之回调函数简单实现
一个简单的回调函数实现 下面创建了一个sort.dll的动态链接库,它导出了一个名为CompareFunction的类型--typedef int (__stdcall *CompareFunction)(const byte*, const byte*),它就是回调函数的类型。另外,它也导出了两个方法:Bubblesort()和Quicksort(),这两个方法原型相同,但实现了不同的原创 2012-06-21 11:13:33 · 1240 阅读 · 0 评论 -
三.指针与数组的“爱恨情仇”
三.指针与数组的“爱恨情仇”本将中指针的算术运算本应放在第二讲中,但考虑到它与数组关系密切故将其纳入本将。1.指针的算术运算在上一讲指针初始化的第4种方式中提到了可以将一个T类型数组的名字赋给一个相同类型的指针,这说明指针可以和数组发生联系,在后面我们会看到这种联系是十分密切的。当有语句char ary[100] = {'a', 'b', 'c', 'd', 'e', 'f'}; ch转载 2012-06-21 10:20:13 · 1518 阅读 · 0 评论 -
C++ 类的静态成员详细讲解
在C++中,静态成员是属于整个类的而不是某个对象,静态成员变量只存储一份供所有对象共用。所以在所有对象中都可以共享它。使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的原则,保证了安全性还可以节省内存。静态成员的定义或声明要加个关键static。静态成员可以通过双冒号来使用即类名>::静态成员名>。 在C++中类的静态成员变量和静态成员函数是个容易出错的地方,本文先通过几个例子来转载 2012-06-23 18:21:32 · 1067 阅读 · 0 评论 -
C++指针和引用
1、指针和引用的定义在深入介绍之前我们首先来看一下指针和引用的定义、指针和引用的区别,然后分别针对指针和引用展开讨论,深入细节为何有这些差异。指针和引用的定义,下面用通俗易懂的话来概述一下:指针-对于一个类型T,T*就是指向T的指针类型,也即一个T*类型的变量能够保存一个T对象的地址,而类型T是可以加一些限定词的,如const、volatile等等。见下图,所示原创 2012-10-02 15:55:29 · 1661 阅读 · 0 评论 -
C++中的虚基类以及构造函数解析
当某类的部分或者全部直接基类是从另一个共同基类派生而来时,在这些直接基类中从上一级共同基类继承来的成员就拥有相同的名称。在派生类的对象中,这些同名数据成员在内存中同时拥有多个副本,同一个函数名会有多个映射。可以使用作用域分辨符来唯一标识并分别访问它们,也可以讲共同基类设置为需基类,这时从不同路径继承过来的同名函数成员在内存中就只有一份副本,同一个函数也只有一个映射。这样就解决了同名成员的唯一标识问原创 2012-10-07 15:04:22 · 2859 阅读 · 0 评论 -
C中的一些关于字符串的操作
#include #include #ifdef _MSC_VER#pragma function(strlen)#endif /* _MSC_VER *//****strlen - return the length of a null-terminated string**Purpose:* Finds the length in bytes of the原创 2012-09-22 11:14:33 · 1505 阅读 · 0 评论 -
C++的成员函数指针与Cococs2d-x的selector机制
在Cocos2d-x中点击某个按钮要执行一个回调函数时,一般的写法是以下这样 : // add a "share" icon to exit the progress. it's an autorelease object CCMenuItemImage *pShareItem = CCMenuItemImage::create(原创 2014-03-13 18:43:27 · 2998 阅读 · 1 评论