c++
文章平均质量分 96
胡小哲
捧着看不懂的故事,道着懵懂的错对。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
类的默认成员函数
类有6个默认成员函数: 1.构造函数 2.拷贝构造函数 3.析构函数 4.赋值操作符重载 5.取地址操作符重载 6.const修饰的取地址操作符重载一:构造函数作用:对私有成员变量进行初始化。 Date(); 公有成员函数,仅在定义对象时自动执行一次。 特点: 1.函数名与类名相同。 2.对象构造时自动调用。 3.无返回值。 4.可以重载。 5.可以在类内外定义。 6.如原创 2017-09-14 01:20:46 · 593 阅读 · 0 评论 -
栈和递归解决迷宫问题
先给出一个迷宫的模型。0代表通路,1代表墙壁,知道出入口后,找到入口到出口之间的通路。 先给出一个简单迷宫模型 现在令下方为出口方向,[2,0]作为入口寻找通路。将走过的路程标记为2。 此时可以发现迷宫存在一个分叉口,假如以顺时针方向对是否存在通路进行判别,则必定会先走没有出口的那一条死路,而当走进死路时,需要进行回溯。 此时可以开辟一个栈用来维护这条通路,先将入口进行压栈,随后判别通路原创 2017-10-12 21:25:39 · 637 阅读 · 0 评论 -
C++中函数与虚函数
需要声明为虚函数:基类的析构函数需要声明为虚函数: 当 derived class 对象经由一个base class指针被删除,而该base class带着一个non-virtual析构函数,实际执行时通常发生的是对象的derived成分没有被销毁。(局部销毁)class Base{public: Base() :_b(1) { cout <<原创 2017-10-13 12:44:42 · 476 阅读 · 0 评论 -
智能指针
智能指针定义为确保返回的资源总是被释放,我们需要将资源放进对象内,当控制流离开,该对象的析构函数会自动释放那些资源。 RAII : 资源获取即初始化1.获得资源后立刻放进管理对象。 2.管理对象运用析构函数确保资源被释放。所谓”智能指针”,其析构函数自动对其所指对象调用 delete。Auto_ptr:1.资源转移顾名思义,当另一个指针或对象来管理这一块空间时,将这块空间的拥有者改变为当前要进行原创 2017-10-30 23:25:56 · 358 阅读 · 0 评论 -
模拟实现list(迭代器)
list同vector类似,都是库提供的众多容器中的一个。同时list 以模板方式实现,可以处理任意型别的变量,包括使用者自定义的资料型态。 在编程语言中List 是标准类库中的一个类,可以简单视之为双向链表,以线性列的方式管理物件集合。和vector不一样的是,list不支持对元素的任意存取。list中提供的成员函数与vector类似,不过list提供对表首元素的操作push_front、pop原创 2017-10-23 23:08:55 · 400 阅读 · 0 评论 -
模拟容器适配器栈和队列
在这里我们用模板参数和模板的模板参数完成适配器栈和队列。之前写过栈和队列,以及 vector 与 list 的的内容。 在这里我们直接使用vector作为模板的模板参数完成适配器栈, 用list作为模板的模板参数完成适配器队列。适配器栈:template<class T,class Container = List<T>>class Queue{public: Queue()原创 2017-10-23 23:21:19 · 291 阅读 · 0 评论 -
模拟实现vector(迭代器,类型萃取)
vector是C++标准库中的部分内容,是一个多功能,能够操作多种数据机构和算法的模板类和函数库。 vector被认为是一个容器,是因为它能像容器一样存放各种类型的对象,能够存放任意类型的动态数组,能够增加和压缩数据。 适合用顺序表实现:#include<assert.h> #include<iostream> using namespace std;struct TrueType原创 2017-10-23 23:01:36 · 487 阅读 · 0 评论 -
使用堆栈(Stack)模拟实现队列(FIFO)
使用堆栈(Stack)来模拟实现队列(FIFO)功能,要求数据必须存储再堆栈内部。 需要实现: enqueue(入队) dequeue(出队) Empty(判空)因为堆栈和队列的线性运算不同,在这里只使用一个堆栈是不够的,我们可以用两个堆栈联合完成队列的模拟。 当入队时,将入队的所有元素压入堆栈 stack1 中。 当出队时,将 stack1 中的所有元素压入 stack2 中,如果此时原创 2017-10-25 00:18:06 · 4776 阅读 · 0 评论 -
日历界面实现(一次输出三个月)
直接用循环写 太蠢了 不解释了。 在这里我以 1995年1月1日为标准 所以暂时只能求1995年1月1日以后的年份日历。bool Getyear(int year){ if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) return true; return false;}int GetAll原创 2017-11-18 17:05:42 · 2132 阅读 · 4 评论 -
模板与泛型编程
一.概念模板是泛型变成的基础。泛型编程:编译与类型无关的代码,是一种复用的方式,模板分为模板函数和模板类。二.模板函数1.定义模板函数是一个通用的函数模板,而不是为每一种类型定义一个新函数,一个函数模板就像一个公式,针对不同类型函数生成不同的函数版本。关键字:template 以 template 开始,后面跟一个模板参数列表(一个逗号分隔的一个或多个模板参数的列表)。template<typen原创 2017-10-15 22:48:55 · 381 阅读 · 0 评论 -
栈和队列
1.栈栈,又名堆栈,是一种运算受限的线性表,因为其仅允许在表的一端进行插入和删除。这一端被称为栈顶,相应的另一端被称为栈底。 按照先进后出的原则存储数据,最先进入的数据被压入栈底,最后进入的数据在栈顶。读取数据的时候从栈顶开始弹出数据。栈具有记忆作用,对栈插入与删除不需要改变栈底指针。示意图: 栈的基本运算: 构造空栈:Init(S)、判空: Empty(S)、判满: Full(S)、进栈:原创 2017-10-11 22:55:04 · 368 阅读 · 0 评论 -
C++实现双向链表
双向链表结构: 实现:List.h#pragma once#include <iostream>#include <string>#include <assert.h>using namespace std;typedef int DateType;struct Node{public: Node() :_pNext(NULL) , _pP原创 2017-09-23 19:18:27 · 377 阅读 · 0 评论 -
日期类的实现
花式实现日期类。#define _CRT_SECURE_NO_WARNINGS 1#include <iostream>#include <ctime>#include <cmath>using namespace std;class Date{public: Date() :_year(1) ,_month(1) ,_day(1)原创 2017-09-17 08:02:43 · 306 阅读 · 0 评论 -
写时拷贝
写时拷贝:通过引用计数实现,相当于对深拷贝的补充。 特点:在分配空间时,多分配(一个 (int) )四个字节,用来记录有多少个指针指向该块空间,当有新的指针指向这块空间,引用计数加1,当要释放时,引用计数减1。(假释放) 当有指针要改变这块空间的内容,再给这个指针分配自己的空间,并且旧空间的引用计数减1,新分配空间的引用计数加1。 当s3的内容需要被更改时,将分配新的空间。 实现:原创 2017-09-20 23:00:55 · 258 阅读 · 0 评论 -
深浅拷贝
浅拷贝浅拷贝是指当对象被复制时,并没有给新对象分配空间,只是增加了一个指针指向已存在的内存。 实现:#include <iostream>using namespace std;// string浅拷贝class String{public: String() { cout << "String()" << endl; } String(c原创 2017-09-21 20:48:58 · 204 阅读 · 0 评论 -
C++继承
继承的概念: 通过继承机制,可以利用已有的数据来定义新的数据类型。新的数据类型不仅拥有新的成员,同时也拥有旧的成员。我们称已经存在的用来派生新类的类为基类,也称父类。由已存在的的类派生出的新类为派生类,也称子类。是面向对象复用的重要手段。基类:基类负责定义在各层次关系中所有类的共同成员。派生类:派生类负责定义各自特有的成员。class Person //父类/基类{private:原创 2017-10-01 21:40:43 · 311 阅读 · 0 评论 -
C++虚继承与虚函数
虚继承在菱形继承中出现的数据二义性问题,使得数据访问时变得复杂,并且导致了数据冗存。虚继承则解决了从不同途径继承来的同名的数据成员在内存中有不同的拷贝造成数据不一致问题。关键字:virtual用法:将共同基类声明设置为虚基类,这时从不同路径继承过来的同名数据成员在内存中只有一份,同一个函数名也只有一个映射。语法: class 派生类: virtual 基类1,virtual 基类2,…,virtu原创 2017-10-03 21:11:34 · 2374 阅读 · 0 评论 -
C++多态性
概念: 多态,按照字面意思就是多种形态。在面向对象语言中,接口的多种不同实现方式即为多态。允许你将父类对象指向一个或更多其他的子类对象,赋值后,父类对象可以根据当前赋值给他的子对象的特征,从而以不同方式运转。 静态多态: 在系统编译期间就可以确定程序执行到这里将要执行哪个函数; 比如 函数的重载 以及 泛型编程。 动态多态: 利用虚函数实现了运行时的多态,也就是说在系统编译的时候并不知道原创 2017-10-11 15:39:25 · 1609 阅读 · 0 评论 -
C++ 网络爬虫 --- 爬取西安链家二手房信息
C++网络爬虫网络爬虫是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。 在这里,我们使用 libcurl 库来对某一特定网页的内容进行抓取。libcurl 库安装首先我们需要介绍一下 libcurl 库 libcurl 库的主要功能就是用不同的协议链接和不同的服务器。 libcurl 当前支持http, https, ftp, gopher, telnet,...原创 2018-03-27 16:19:39 · 612 阅读 · 0 评论
分享