(转)#ifndef 与 #program once 的区别

为了避免同一个文件被include多次,C/C++中有两种方式,一种是#ifndef方式,一种是#pragma once方式。在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别。 方式一: #ifndef __SOMEFILE_H__ #...

2016-06-30 14:57:13

阅读数 222

评论数 0

STL之multiset

multiset同set相似,唯一的不同就是set中的元素是唯一的,multiset对于同一值可以出现多次,直接就给个基本操作的例子:void func1() { multiset<int> ms; int temp; cout << "请...

2016-06-27 09:09:31

阅读数 152

评论数 0

STL之set

1、set是集合容器,其中的元素是唯一的,集合中元素按一定的顺序排序,元素的插入是按照排序规则进行插入的,所以不能指定插入位置;2、set采用红黑树变体的数据结构实现,红黑树属于平衡二叉树,再插入与删除操作上比vector快3、set不能采用[]或者at()的方式访问数据,也不能按[]的方式插入数...

2016-06-27 08:46:38

阅读数 371

评论数 0

STL之priority_queue

priority_queue是优先级队列,主要应用于需要自动排序的情况,比如录入成绩。一、priority_queue的基本操作#include<iostream> #include<queue> #include<functional>using namesp...

2016-06-26 20:09:21

阅读数 172

评论数 0

STL之list

list是双向链表容器一、list的基本操作#include<iostream> #include<list> using namespace std;void print(list<int>& l) { list<int>::ite...

2016-06-26 19:38:27

阅读数 121

评论数 0

STL之deque

deque是双端数组,跟vector类似,只不过多了从头部添加和删除的操作,直接上例子:1、deque的基本操作#include<iostream> #include<deque>using namespace std;void print(deque<int>...

2016-06-26 17:10:53

阅读数 177

评论数 0

STL之vector容器

vector容器是一种动态数组,其本质的实现就是数组。一、vector对象的默认构造vector<int> v1; vector<char> v2; vector<string> v3; vector<CA*> v4; //CA是自定义类 v...

2016-06-26 15:55:56

阅读数 232

评论数 0

指针

铁律1:指针也是一种数据类型一、指针1、指针是一种变量,占有内存空间,用来把保存内存地址。指针的大小在32位平台下是4字节,64位平台下是8字节。2、*p操作内存1> *p放在等号左边,相当于对指向的内存空间赋值。#include"stdio.h" #include&qu...

2016-06-26 12:58:00

阅读数 336

评论数 0

函数调用模型-主调函数与被调函数

一、函数调用模型:返货都是先以返回地址,函数参数,执行状态的顺序依次压栈的,函数执行完毕再从上到下依次弹栈。二、函数调用模型中的内存管理还是以上面那个图为例:1、main函数中,可以在栈区、堆区、全局区开辟空间,这些内存空间都可以在fa和fb函数中使用2、fb函数中,在栈上开辟的内存空间,不能在f...

2016-06-26 10:38:49

阅读数 1613

评论数 0

栈区的地址增长方向与buf地址的增长方向是两个完全不同的概念

一、栈区的地址增长方向要想验证栈区究竟是开口向上还是开口向下,都进行先压变量a再压变量b的操作,若a的首地址比b的首地址大则说明开口向下,若b的首地址比a的首地址大,则说明开口向上,下面就用代码来验证一下:#include"stdio.h" #include"stdl...

2016-06-26 09:50:33

阅读数 1078

评论数 0

内存四区之堆栈区

一、堆区先看一个例子:#include"stdio.h" #include"stdlib.h" #include"string.h"char* getval(int num) { char* p = NULL; p = (...

2016-06-26 08:58:37

阅读数 805

评论数 0

静态存储区的内存四区

一、操作系统是如何执行exe程序的?1、操作系统首先把物理磁盘代码load到内存;2、操作系统把C代码分成四分区;3、操作系统找到main函数入口执行二、内存四区1、栈区:局部变量存放的位置,因为局部变量出了作用域会被析构释放空间,所以也叫临时区;2、堆区:需要手动分配和释放内存的区,由mallo...

2016-06-25 20:07:39

阅读数 1491

评论数 0

C语言之变量的本质

一、变量的本质变量的本质是一段连续内存空间的别名,或者说变量是一段连续内存空间的门牌号,画个图:不管是标准数据类型,还是指针(指针也是一种数据类型),都是一样的,都是内存空间的门牌号,千万不好把变量画到内存中去。二、通过变量往内存中进行读写数据三、修改内存的方法1、直接int a = 10; a ...

2016-06-25 16:42:19

阅读数 1034

评论数 0

C语言之数据类型

1、数据类型是固定内存块大小的别名,也就是说申明变量为一种数据类型就是告诉编译器分配多少内存给我。看这么一段代码:#include"stdio.h" #include"stdlib.h"int main() { int a[10]; //告诉编...

2016-06-25 16:09:54

阅读数 187

评论数 0

C语言之数组做参数退化问题

先来个冒泡排序的简单实现来说明整个问题:#include"stdio.h" #include"stdlib.h"void print(int a[3], int num) { for (int i = 0; i < num; i++) ...

2016-06-25 15:30:11

阅读数 428

评论数 0

STL之string

一、string类型的初始化MSDN上列出的所有String的构造函数: 感觉这里应该少了一种String(int32, char)这个构造函数,例子中会给出的:#include<iostream> #include<string>using namespace std;...

2016-06-25 10:38:22

阅读数 2542

评论数 0

设计模式之代理模式

代理都知道是什么意思,一般都有个代理人,一个被代理人,代理人替被代理人完成各种事情。最常见的例子就是现在的网上购物,比如淘宝,当当、亚马逊等,这些网站其实都是在做代理的工作,而被代理人则是那些一个个的店家。不管是代理人还是被代理人他们的工作都是卖东西,代理模式也是同样的一个意思。一、代理模式的条件...

2016-06-24 16:03:49

阅读数 350

评论数 0

设计模式之单例模式

单例模式故名思议类只能有一个对象,下面就来说说如何实现只有一个对象的。一、单利模式的三个条件1、类的构造函数是private访问权限; 2、类中定义一个static的类成员对象指针(其访问权限最好是protected,因为是不允许外部通过这个对象指针生成该类的对象的,当然就算不是protecte...

2016-06-24 15:43:32

阅读数 118

评论数 0

C++之类的成员函数的原理

先来一个类的成员函数的例子:#include<iostream>using namespace std;class MyTime { private: int hour; int minute; int second; public: void sett...

2016-06-22 11:19:26

阅读数 629

评论数 0

C++之内联函数-inline

一、宏函数#define SQR(x) ((x)*(x))优点:不需要调用,直接内嵌到代码段 缺点:直接内嵌造成了代码体积增大,且容易产生歧义, 没有类型检查 二、普通函数int sqr(int x){ return x * x; }优点:不会产生歧义,有类型检查,不会增加代码体积 缺点:需...

2016-06-22 11:05:48

阅读数 142

评论数 0

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