胡小哲的博客

胡小哲

C++ 网络爬虫 --- 爬取西安链家二手房信息

C++网络爬虫 网络爬虫是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。 在这里,我们使用 libcurl 库来对某一特定网页的内容进行抓取。 libcurl 库 安装 首先我们需要介绍一下 libcurl 库 libcurl 库的主要功能就是用不同的协议链接和不同的...

2018-03-27 16:19:39

阅读数 169

评论数 0

日历界面实现(一次输出三个月)

直接用循环写 太蠢了 不解释了。 在这里我以 1995年1月1日为标准 所以暂时只能求1995年1月1日以后的年份日历。bool Getyear(int year) { if ((year % 4 == 0 && year % 100 != 0) || year % 4...

2017-11-18 17:05:42

阅读数 600

评论数 2

智能指针

智能指针定义为确保返回的资源总是被释放,我们需要将资源放进对象内,当控制流离开,该对象的析构函数会自动释放那些资源。 RAII : 资源获取即初始化1.获得资源后立刻放进管理对象。 2.管理对象运用析构函数确保资源被释放。所谓”智能指针”,其析构函数自动对其所指对象调用 delete。Auto...

2017-10-30 23:25:56

阅读数 220

评论数 0

使用堆栈(Stack)模拟实现队列(FIFO)

使用堆栈(Stack)来模拟实现队列(FIFO)功能,要求数据必须存储再堆栈内部。 需要实现: enqueue(入队) dequeue(出队) Empty(判空)因为堆栈和队列的线性运算不同,在这里只使用一个堆栈是不够的,我们可以用两个堆栈联合完成队列的模拟。 当入队时,将入队的所有元素...

2017-10-25 00:18:06

阅读数 691

评论数 0

模拟容器适配器栈和队列

在这里我们用模板参数和模板的模板参数完成适配器栈和队列。之前写过栈和队列,以及 vector 与 list 的的内容。 在这里我们直接使用vector作为模板的模板参数完成适配器栈, 用list作为模板的模板参数完成适配器队列。适配器栈:template<class T,class Co...

2017-10-23 23:21:19

阅读数 157

评论数 0

模拟实现list(迭代器)

list同vector类似,都是库提供的众多容器中的一个。同时list 以模板方式实现,可以处理任意型别的变量,包括使用者自定义的资料型态。 在编程语言中List 是标准类库中的一个类,可以简单视之为双向链表,以线性列的方式管理物件集合。和vector不一样的是,list不支持对元素的任意存取。...

2017-10-23 23:08:55

阅读数 157

评论数 0

模拟实现vector(迭代器,类型萃取)

vector是C++标准库中的部分内容,是一个多功能,能够操作多种数据机构和算法的模板类和函数库。 vector被认为是一个容器,是因为它能像容器一样存放各种类型的对象,能够存放任意类型的动态数组,能够增加和压缩数据。 适合用顺序表实现:#include<assert.h> #...

2017-10-23 23:01:36

阅读数 129

评论数 0

模板与泛型编程

一.概念模板是泛型变成的基础。泛型编程:编译与类型无关的代码,是一种复用的方式,模板分为模板函数和模板类。二.模板函数1.定义模板函数是一个通用的函数模板,而不是为每一种类型定义一个新函数,一个函数模板就像一个公式,针对不同类型函数生成不同的函数版本。关键字:template 以 templat...

2017-10-15 22:48:55

阅读数 152

评论数 0

C++中函数与虚函数

需要声明为虚函数:基类的析构函数需要声明为虚函数: 当 derived class 对象经由一个base class指针被删除,而该base class带着一个non-virtual析构函数,实际执行时通常发生的是对象的derived成分没有被销毁。(局部销毁)class Base { publ...

2017-10-13 12:44:42

阅读数 215

评论数 0

栈和递归解决迷宫问题

先给出一个迷宫的模型。0代表通路,1代表墙壁,知道出入口后,找到入口到出口之间的通路。 先给出一个简单迷宫模型 现在令下方为出口方向,[2,0]作为入口寻找通路。将走过的路程标记为2。 此时可以发现迷宫存在一个分叉口,假如以顺时针方向对是否存在通路进行判别,则必定会先走没有出口的那一条死...

2017-10-12 21:25:39

阅读数 243

评论数 0

栈和队列

1.栈栈,又名堆栈,是一种运算受限的线性表,因为其仅允许在表的一端进行插入和删除。这一端被称为栈顶,相应的另一端被称为栈底。 按照先进后出的原则存储数据,最先进入的数据被压入栈底,最后进入的数据在栈顶。读取数据的时候从栈顶开始弹出数据。栈具有记忆作用,对栈插入与删除不需要改变栈底指针。示意图: ...

2017-10-11 22:55:04

阅读数 130

评论数 0

C++多态性

概念: 多态,按照字面意思就是多种形态。在面向对象语言中,接口的多种不同实现方式即为多态。允许你将父类对象指向一个或更多其他的子类对象,赋值后,父类对象可以根据当前赋值给他的子对象的特征,从而以不同方式运转。 静态多态: 在系统编译期间就可以确定程序执行到这里将要执行哪个函数; 比如 函数...

2017-10-11 15:39:25

阅读数 812

评论数 0

C++虚继承与虚函数

虚继承在菱形继承中出现的数据二义性问题,使得数据访问时变得复杂,并且导致了数据冗存。虚继承则解决了从不同途径继承来的同名的数据成员在内存中有不同的拷贝造成数据不一致问题。关键字:virtual用法:将共同基类声明设置为虚基类,这时从不同路径继承过来的同名数据成员在内存中只有一份,同一个函数名也只有...

2017-10-03 21:11:34

阅读数 422

评论数 0

C++继承

继承的概念: 通过继承机制,可以利用已有的数据来定义新的数据类型。新的数据类型不仅拥有新的成员,同时也拥有旧的成员。我们称已经存在的用来派生新类的类为基类,也称父类。由已存在的的类派生出的新类为派生类,也称子类。是面向对象复用的重要手段。基类:基类负责定义在各层次关系中所有类的共同成员。派生类...

2017-10-01 21:40:43

阅读数 154

评论数 0

C++实现双向链表

双向链表结构: 实现:List.h #pragma once #include <iostream> #include <string> #include <assert.h> using namespace std;typedef int DateTyp...

2017-09-23 19:18:27

阅读数 135

评论数 0

深浅拷贝

浅拷贝浅拷贝是指当对象被复制时,并没有给新对象分配空间,只是增加了一个指针指向已存在的内存。 实现:#include <iostream> using namespace std; // string浅拷贝 class String { public: String() ...

2017-09-21 20:48:58

阅读数 96

评论数 0

写时拷贝

写时拷贝:通过引用计数实现,相当于对深拷贝的补充。 特点:在分配空间时,多分配(一个 (int) )四个字节,用来记录有多少个指针指向该块空间,当有新的指针指向这块空间,引用计数加1,当要释放时,引用计数减1。(假释放) 当有指针要改变这块空间的内容,再给这个指针分配自己的空间,并且旧空间的引...

2017-09-20 23:00:55

阅读数 114

评论数 0

日期类的实现

花式实现日期类。#define _CRT_SECURE_NO_WARNINGS 1 #include <iostream> #include <ctime> #include <cmath> using namespace std;class Date { pu...

2017-09-17 08:02:43

阅读数 130

评论数 0

类的默认成员函数

类有6个默认成员函数: 1.构造函数 2.拷贝构造函数 3.析构函数 4.赋值操作符重载 5.取地址操作符重载 6.const修饰的取地址操作符重载一:构造函数作用:对私有成员变量进行初始化。 Date(); 公有成员函数,仅在定义对象时自动执行一次。 特点: 1.函数名与类名相...

2017-09-14 01:20:46

阅读数 287

评论数 0

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