自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 C++实现计算器(四则混合运算)

计算器是带括号的四则运算实际上利用的是栈后进先出的原则 转换思想: #define _CRT_SECURE_NO_WARNINGS 1#include"stdio.h" #include"stdlib.h" #include"string.h" #define maxsize 1024typedef struct{ float data[maxsize]; in

2017-04-29 18:34:01 28155 4

原创 递归和栈求解迷宫的最短路径

采用递归的方式求最短路径 1、用一个栈专门用来保存有效的路径 2、再用一个栈来辅助保存所有走过的路径。 3、然后再用一个栈用来保存最短的路径 4、如果每次找到了出口,那么必然有两个栈一个保存了所有走过的路径,一个保存了通路的路径 5、于是每找到一次出口,那么开始进行比较,如果当前最短路径中所保存的每个坐标的个数如果大于本次通路的路径,那么就将最短路径中的所有数据出栈,并将本次通路的路径放入

2017-04-29 17:17:45 2416

原创 迭代器模拟实现STL中的list

list中的迭代器类似与智能指针的作用,它是将指向链表指向结点的指针管理起来。 在STL中的list是带头结点的双向循环链表,这样的设计很巧妙,可以让我们的插入和删除元素的时候减少一些需要考虑的边界问题。 要模拟实现STL中的list我们首先得模拟实现迭代器,设计成用来管理指向list中结点的指针。因此要先给出迭代器这个类。所以在使用标准库中的迭代器的时候实际上是定义了一个迭代器对象,在这个对象

2017-04-22 17:45:34 430

原创 标准STL中list的各个接口的使用

list是标准STL的序列式容器,它里面的元素是有序的线性序列 STL中的list就是一个带头结点的循环双向链表,可以高效的删除和插入元素。 但是list是不支持随机访问的,因为它的存储空间是不连续的。 而且标准的STL的list我们是通过迭代器来遍历容器里的元素的,迭代器是一种检查容器内元素并遍历元素的数据类型。 标准STL中list的成员函数 constructor:list的成

2017-04-21 20:09:32 650 1

原创 实现对称矩阵以及压缩存储

对称矩阵压缩存储 压缩矩阵:对称矩阵存储时只需要存储上三角或下三角的数据,所以最多存储 n*(n+1)/2个数据。 在存数据的 时候我们只需要将一半的数据存入一个一维数组中: 当然包含对角线元素 如果我们想要通过保存的这个一维数组的内容打印出二维数组的内容那么就要根据极具特色的行和列 #include<iostream>#include<stdlib.h>using namespa

2017-04-20 17:18:27 2108

原创 队列初体验

队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表。 进行插入操作的一端称为队尾,通常称为入队列;进行删除操作的一端称为队头,通常称为出队列。 队列具有先进先出的特性(FIFO)。 队列又分为顺序队列和链式队列 所谓顺序队列也就是分配个这个队列的存储空间是连续的链式队列相当于我们的单链表 对链式队列的操作相当于对我们单链表的操作,不过在插入的时候我们需要移动尾指针,在

2017-04-20 13:19:14 423

原创 走迷宫

通过栈将每次可以通过的路径保存起来。 但是要注意关于入口点和出口点的一些边界问题 一不小心就可能因为边界问题陷入死循环或者程序直接崩溃。#pragma warning (disable:4996)#include<iostream>#include<stdlib.h>#include<fstream> #include<assert.h>#include<stack>using n

2017-04-19 23:58:23 338

原创 全排列

方法一:采用递归的方式例子1、将数组int arr[4]={1,2,3,4}进行全排列static int n = 0;void Perm(int *arr, int k, int m){ if (k ==m) { for (int i = 0; i <m; i++) { cout << arr[i]; } cout << endl; ++n; }

2017-04-19 10:25:49 254

原创 Linux之内存管理mm_struct

每个进程都有自己的mm_struct,使得每个进程都有自己独立的虚拟的地址空间 在每个进程的task_struct里都会有一个struct mm_struct*指向每个进程自己的mm_struct,mm_sruct是内存描述符,在每个mm_struct又都有一个pgd_t * 使其指向页表,然后通过页表实现从虚拟地址到物理地址的映射。Linux虚拟地址用户空间分布 struct mm_struc

2017-04-15 12:07:36 3967

原创 Linux进程管理之task_struct

进程和进程块 什么是进程? 进程就是一个正在执行的程序 进程就是正在计算机上执行的程序实例 能分配给处理器并由处理器执行的实体 什么是进程控制块? 当一个程序被加载到内存中会为它分配一个进程控制块,这个进程控制块(PCB)由操作系统创建和管理.在Linux下PCB就是一个task_struct的结构体,这个结构体就是用来描述进程的信息。操作系统是如何管理所有进程呢,就是通过每个进程的描

2017-04-14 22:51:53 380

原创 如何创建一个只能在堆上创建对象的类

C++创建对象有两种方式,一种是静态的创建对象,一种是动态的创建对象。静态创建对象:在编译期间就已经为对象分配了内存空间编译器自动调用构造函数动态创建对象:程序在运行期间才为对象开辟空间如果我们想要只能在堆上创建对象,可能我们会想到在类里把构造函数声明成为私有的,这样一来我们就不能在外面直接定义对象,以为系统无法调用构造函数了。但此时如果我们直接在类外面创建对象,那么在new 的时

2017-04-12 12:16:02 569

原创 如何把字符串转换成整数

在把字符串转换成数字的时候我们需要考虑如下问题 1、字符串是不是空串? 2、字符串中是否存在正负号问题 3、转换成整数之后是否会发生溢出int g_val = 0;long long StrToIntCode(const char *str, bool flag);int StrToInt(const char *str){ g_val = 1; long long nu

2017-04-10 16:35:56 717

原创 数组和指针的关系

指针和数组有什么关系呢? 有些人认为指针就是数组,数组就是指针,这种说法是错误的,指针就只是指针,数组也只是数组,它们之间是没有任何关系的比较1:求数组大小和指针字节的大小先明确一点即使我用sizeof(p)这种方式也不能说成sizeof是一个函数,sizeof只是一个关键字,不要被表象所迷惑。 char *p = "abcdefgh"; char array[9] = "abcde

2017-04-09 13:47:48 651

原创 对fork()函数的初步认识

用户->外壳程序(shell,lib)->系统调用->操作系统->驱动->底层的软硬件 系统调用实际上是操作系统对外提供的接口进程与普通程序的差别 在Linux下一切皆文件,程序也就是一些二进制文件,开始是在硬盘上存放的的。 //如果我们将这个程序跑起来,那么这个程序得加载到内存中成为可执行程序。 进程与普通程序的区别:进程具有PCB(进程控制块)她是用来描述进程信息的 进程是一个实体,每

2017-04-08 18:08:55 300

原创 标准库里的weak_ptr如何解决循环引用所带来的问题

#include#include#includeusing namespace std;templateclass T>class Node{public: Node(T num) :value(num) { } ~Node() { cout "~Node()" << endl; } weak_

2017-04-04 15:14:31 2655

原创 shared_ptr循环引用问题

shared_ptr循环引用会造成内存泄漏如下所示#include<iostream>#include"boost\shared_ptr.hpp"#include"boost\weak_ptr.hpp"#include<stdlib.h>using namespace std;struct Node{ boost::shared_ptr<Node> pNext; boos

2017-04-03 15:49:56 834

原创 浅析为什么要有auto_ptr_ref这个类

首先在VS2013的环境下的一段测试代码#include<iostream>using namespace std;template<class T>class AutoPtr{public: AutoPtr(T* pStr = NULL) : _pStr(pStr) { cout << "AutoPtr()" << endl; }

2017-04-01 17:19:25 502

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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