数组及多维数组

c++中没有多维数组的概念,多维数组就是数组的数组。按照从内向外的阅读顺序有助于更好地理解其真实含义。在c++11中增加了范围for的使用二重for来处理二维数组size_t cnt=0; int ia[r][c]; for(size_t i=0; i!=r; ++i) for(size_...

2015-08-23 17:31:11

阅读数:238

评论数:0

各种排序算法实现及总结

本文主要比较一下各种排序的性能(平均时间复杂度和最差情况)和基本实现。 这个默认按照从小到大排列,输入的数据可以重复,假设输入的数组为A,下标从0到N-1注意在比较算法复杂度时,我们会关注键值的比较次数和交换次数。1、冒泡排序 冒泡排序如果不是因为名字比较好记,没有任何优势。它的思路是一趟又一...

2015-08-21 21:20:18

阅读数:327

评论数:0

C语言 字节对齐

字节对齐的目的是使CPU能对变量进行快速访问。 字节对齐,对于标准数据类型,它的地址只要是它的长度的整数倍就可以了。对于非标准数据类型按照下面的原则对齐数组 :按照基本数据类型对齐,第一个对齐了后面的自然也就对齐了。 联合 :按其包含的长度最大的数据类型对齐。 结构体: 结构体中每个数据...

2015-08-21 17:10:59

阅读数:276

评论数:0

new malloc(待更新)

1、new是运算符(C++),malloc是函数(c++/c) 2、new 返回指定类型的指针,并且可以自动计算所需要大小 malloc 则必须要由我们计算字节数,并且在返回后强行转换为实际类型的指针。 3、malloc 只管分配内存,并不能对所得的内存进行初始化,所以得到的一片新内存中,其值...

2015-07-24 19:10:28

阅读数:197

评论数:0

引用 指针的区别

简单来说 1. 引用不能为空,指针可以为空。 定义一个引用一定要初始化。 使用指针之前必须做判空操作,而引用不必。 2. 引用不能改变指向,指针不能改变指向。 3. 引用的大小是指向的变量的大小,指针是指针本身的大小,32位系统中4个字节。 4. 引用比指针安全,多个指针指向同一个...

2015-07-24 14:44:23

阅读数:223

评论数:0

线程通信 线程同步(未完待续)

首先回答死锁的定义,所谓死锁就是一个进程集合中的多个进程因为竞争资源,而造成的互相等待现象。死锁的原因:系统资源不足;多个进程的推进顺序不合理死锁的必要条件:互斥条件(Mutual exclusion):资源不能被共享,只能由一个进程使用。 请求与保持条件(Hold and wait):已经得到...

2015-07-24 14:38:05

阅读数:221

评论数:0

进程通讯

进程间通讯的方式:管道 管道是一种特殊的文件,对于进程来说,它和普通的文件没什么区别。1)管道是半双工的,数据只能一个方向流动;需要双方通信时,需要建立两个管道。 2)管道只能用于父子进程或兄弟进程之间。int pipe(int fileds[2]);创建一对指向管道inode节点为文件描述符...

2015-07-24 14:14:24

阅读数:174

评论数:0

[智力题]

在一个重男轻女的国家里,每个家庭都想生男孩,如果他们生的孩子是女孩,就再生一个,直到生下的是男孩为止。这样的国家,男女比例会是多少? 答案: 1:1假设有n对夫妇,生出n个孩子,由于生男生女比例相同,所以这n个孩子中有n/2个男孩,n/2个女孩(1:1) n/2对生女孩的夫妇继续生,只是问题的...

2015-07-23 21:20:01

阅读数:223

评论数:0

[2016面试]海量数据处理

互联网公司面试很喜欢问海量数据的查找(查找某个数,查找重复的数,查找未出现的数等等)、排序(全部排序、部分排序,找出第k大的数,找出前k大的数等等)等问题,基本的问题都是数据量很大(内存不够存放——降低空间复杂度)和性能要求高(运行时间有要求——减低空间复杂度) 这里列出一些常见的一些问题来处理...

2015-07-23 19:52:52

阅读数:449

评论数:0

虚函数

OOP的核心是数据抽象、继承和动态绑定。 所有虚函数必须都有定义。通常情况下,我们不使用某个函数,则无需为该函数提供定义。但是我们必须为每一个虚函数提供定义,而不管它是否被用到了,这是因为连编译器也无法确定到底会用哪个虚函数。多态虚函数表不能声明为虚函数的函数 普通函数(非成员函数) 因为普...

2015-07-23 13:34:57

阅读数:194

评论数:0

const

const变量 const变量有三种出现的位置 关键的一点是:const关键字的目的是说明变量不能被修改或更新,所以定义时必须初始化 1、全局const变量 在进程内存那篇文章我们说过,全局的只读变量(const)被放在代码段,也可以说是只读数据段const int i =0; cons...

2015-07-23 12:56:36

阅读数:794

评论数:0

堆和栈的区别

一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, ...

2015-07-22 23:08:17

阅读数:235

评论数:0

类的大小(sizeof)

空类的大小 这句话本身是有些问题的,因为我们一般不说类的大小,而说对象的大小class A{ }; A a; sizeof(a);值应该是1,即一个字节。原因:空类也会被实例,每个实例在内存中都有一个独一无二的地址,为了达到这个目的,编译器往往会给一个空类隐含的加一个字节,这样空类在实例化后在内...

2015-07-22 23:05:13

阅读数:226

评论数:0

define和内联函数

宏定义 宏替换是按定义替换成相应的常量表达式或字符闯,不会增加任何其他字符(如圆括号()等) #define NUM 5+7 p = NUM*NUM将会被替换成p = 5+7*5+7 所以宏定义仅仅是文本替换。宏定义与内联函数首先,为什么需要使用宏定义? 函数调用需要使用函数栈,需...

2015-07-21 11:25:47

阅读数:403

评论数:0

静态变量 全局变量

变量可以分为全局变量、静态全局变量、静态局部变量和局部变量 修饰符:全局变量在源文件的函数外部声明(不含extern),若其他源文件要调用这个变量,就需要通过extern关键字来引用一下。静态变量用static修饰 按存储区域分:全局变量、静态全局变量和静态局部变量都存放在内存的全局数据区,局...

2015-03-20 10:43:33

阅读数:255

评论数:0

原码反码补码

本文谈论的都为有符号数。 这得从二进制的原码说起: 二进制原码最大为0111111111111111=215-1=32767 二进制原码最小为1111111111111111=-(215-1)=-32767 正0和负0:0000000000000000=1000000000...

2015-03-06 15:36:01

阅读数:304

评论数:0

C及C++格式控制符

算法题中经常要求按照某种固定的格式输出 C语言中主要的使用printf() 1.d格式:用来输出十进制整数。主要有以下几种用法: % - 0 m.n l或h 格式字符 %:表示左对齐输出,如省略表示右对齐输出 0:有0表示指定空位填0,如省略表示指定空位不填 m.n m指域宽,即对应的输出项在输出...

2015-03-06 15:06:14

阅读数:307

评论数:0

gcc下使用数学公式

发现gcc下使用数学公式 比如include后,使用如pow的幂函数,编译时仍然会出现undefined reference to 'pow' 这是由于 #include只是包含了要使用的数学函数库的头文件,其中仅仅包含了相关数学函数的声明,其真正的函数体以库的形式封装起来了,所以在链接的时...

2015-03-03 19:04:26

阅读数:458

评论数:0

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