自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 泛型算法

标准库并未给每个容器添加大量功能,而是提供了一组算法,它们实现了一些经典算法的公共接口,如排序和搜索。这些算法中大多独立于任何特定容器,它们可以用于不同类型的元素和多种容器类型,所以称之为泛型算法,大多数算法定义在#include <algorithm>中,标准库还在头文件#include <numeric>中定义了一组数值泛型算法,一般情况下这些算法并不...

2019-03-29 17:09:04 248

转载 sort排序函数详解

参考自:https://www.cnblogs.com/AlvinZH/p/6784862.html?utm_source=itdadao&utm_medium=referral阅读目录1.sort 2.sort简介 3.sort扩展1.sort使用:#include <algorithm>   using namespace std;作用:排...

2019-03-29 11:26:21 744

原创 容器适配器(stack、queue、priority_queue)

除了顺序容器外,标准库还定义了三个顺序容器适配器:stack、queue、priority_queue,适配器是标准库中的一个通用概念,容器、迭代器和函数都有适配器,一个容器适配器接受一种已有的容器类型,使其行为看起来像一种不同的类型。所有容器适配器都支持的操作和类型:size_type //一种类型,足以保存当前类型的最大对象的大小value_type //元素类型con...

2019-03-26 20:25:09 398

原创 STL中string的额外操作

构造string的其他方法string s1;string s2(s1);string s2=s1;string s3("value");string s3="value";string s4(n,'c'); //把s4初始化为由连续n个字符c组成的串出了以上构造函数和顺序容器相同的构造函数外,string类型还支持另外三个构造函数string s(cp,n); //s...

2019-03-26 10:53:41 345

原创 顺序容器的相关操作

顺序容器迭代器(forward_list迭代器部分不支持) iterator //容器的正序迭代器类型reverse_iterator //容器的逆序迭代器类型const_iterator //可以读取元素,但不能修改元素的迭代器类型const_reverse_iterat...

2019-03-23 18:32:46 185

原创 vector管理容量的成员函数、vector内存释放的方法

为了支持快速随机访问,vector将元素连续存储----每个元素紧挨着前一个元素存储。对于它的内存分配策略,标准库实现者采用了可以减少容器空间重新分配次数的策略,当不得不获取新的内存空间时,vector和string的实现通常会比分配新的空间需求更大的内存空间,容器预留这些空间作为备用,可用来保存更多的新元素,这样就不需要每次添加新元素都重新分配容器的内存空间了。这种分配策略比每次添加新元素时都重...

2019-03-22 20:49:59 599

转载 浅析栈区和堆区内存分配的区别

转载自:https://www.jb51.net/article/40513.htm以下是对栈区和堆区内存分配的区别进行了详细的分析介绍,需要的朋友可以过来参考下一直以来总是对这个问题的认识比较朦胧,我相信很多朋友也是这样的,总是听到内存一会在栈上分配,一会又在堆上分配,那么它们之间到底是怎么的区别呢?为了说明这个问题,我们先来看一下内存内部的组织情况.从上图可知,程序占用的内存被...

2019-03-22 16:49:36 1516 1

转载 using在继承构造函数中的用法(c++11)

参考自:https://blog.csdn.net/K346K346/article/details/81703914首先基类的构造函数和析构函数是不能被子类所继承的,之所以叫继承构造函数,实则含义是子类继承父类后,子类的构造函数所调用父类构造函数的一种方式。子类为完成基类初始化(基类中没有默认的无参构造函数的情况下),在C++11之前,需要在初始化列表调用基类的构造函数,从而完成构造函数...

2019-03-21 17:29:10 4674 2

原创 =default生成默认构造函数、委托构造函数、=delete定义删除函数

=default使用 = default生成默认构造函数:class Sales_data{public: //拷贝控制成员 使用default Sales_data() = default; Sales_data(const Sales_data&) = default; Sales_data& operator=(const Sales_data&)...

2019-03-19 12:16:59 758

原创 范围for语句

范围for语句遍历给定序列中每个元素并对序列中的每个值执行某种操作其语法形式是:for (declaration : expression)statement其中expression部分是一个对象,用于表示一个序列,比如用花括号括起来的初始值列表、数组、vector、string等类型的对象,这些类型的共同特点是拥有能返回迭代器的begin和end成员,declaration部分负责...

2019-03-18 20:39:40 465

原创 类型别名声明using、类型说明符auto、类型指示符decltype、尾置返回类型->

usingusing的用法:using 类型名 = 定义的类型的别名;using SI = Sales_item; //SI是Sales_item的同义词指针、常量和类型别名:如果某个类型别名指代的是复合类型或常量,那么把它用到声明语句里就会产生意想不到的后果例如下面的声明语句用到了类型pstring,它实际上是类型char*的别名typedef char* pstring;...

2019-03-18 20:30:16 585

原创 constexpr类型、空指针nullptr

常量表达式:是指值不会改变并且在编译过程就能得到计算结果的表达式,一个对象(或表达式)是不是常量表达式由它的数据类型和初始值共同决定。const int max_files = 20; //max_files是常量表达式const int limit = max_files + 1; //limit是常量表达式int staff_size = 27; //staff_size不是常...

2019-03-18 18:14:36 229

原创 双向链表

.h文件#ifndef LINKLIST_H#define LINKLIST_Htypedef struct Node{ Node(const int data_); int data; Node* next; Node* pre;}Node;class LinkList{public: LinkList(); LinkList(const LinkList&...

2019-03-18 17:43:54 115

原创 三种工厂模式(Factory)

一、简单工厂模式简单工厂模式事属于创建型模式,又叫做静态工厂方法(static Factory Method)模式,简单工厂模式是由一个工厂对象决定创建出来哪一种产品类的实例,简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一类产品类(这些产品类继承自一个父类或接口)的实例,假设有一个工厂,他能生产出A、B俩种产品,当客户需要产品的时候一定要告诉工厂是哪种产品,是A还是B,当...

2019-03-18 17:15:42 354

转载 观察者模式(Observer)

转载自:https://www.cnblogs.com/suzhou/p/dp16obsvr.html意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。动机:将一个系统设计成一系列相互协作的类有一个常见的副作用:需要维护相关对象之间的一致性。观察者模式定义一种交互,即发布-订阅:一个对象当自身状态发生改变时,会发出...

2019-03-18 11:18:02 225

原创 满二叉树、完全二叉树、二叉树的性质

满二叉树:单是每个结点都存在左右子树不能算是满二叉树,还必须要所有的叶子都在同一层上,这就做到了整棵树的平衡,因此满二叉树的特点有:1.叶子只能出现在最下一层,出现在其他层就不可能达成平衡2.非叶子结点的度一定是23.在同样深度的二叉树中,满二叉树的结点个数最多,叶子数最多完全二叉树:对一棵具有n结点的二叉树按层序编号,如果编号为i(1&lt;=i&lt;=n)的结点与同样深...

2019-03-15 14:04:54 1999

原创 树的双亲孩子表示法、二叉链表

双亲孩子表示法:把每个结点的孩子结点排列起来,以单链表作存储结构,则n个结点有n个孩子链表,如果是叶子结点则此单链表为空,然后n个头指针又组成一个线性表,采用顺序存储结构,存放一个一维数组中#define MAX_TREE_SIZE 100typedef struct ChildNode //孩子结点{ int childIndex; //孩子结点所在数组的下...

2019-03-15 14:00:32 3229

原创 单例模式(Singleton)——懒汉、饿汉模式

其他文章:https://blog.csdn.net/leikun153/article/details/80583009https://www.cnblogs.com/cthon/p/9196664.htmlhttps://blog.csdn.net/zwt0112/article/details/82720645#include "stdafx.h"#include <mutex...

2019-03-14 20:45:45 147

原创 快速排序——生成n个不重复的随机数并快速排序(C++)

希尔排序相当于直接插入排序的升级,它们同属于插入排序类堆排序相当于简单选择排序的升级,它们同属于选择排序类快速排序相当于冒泡排序的升级,它们都属于交换排序类快速排序的基本思想是:通过一趟排序将待排记录分割成独立的俩部分,其中一部分记录的关键字比另一部分记录的关键字小,则可分别对这俩部分记录继续进行排序,以达到整个序列有序的目的,快速排序的时间性能取决于快速排序递归的深度,快速排序需要选定枢轴...

2019-03-14 18:11:43 2550 2

原创 指向常量的指针、常量指针、底层const、顶层const

指向常量的指针:指向常量的指针没有规定其所指的对象必须是一个常量,它可以指向一个非常量,所谓指向常量的指针仅仅要求不能通过该指针改变对象的值,而没有规定那个对象的值不能通过其他路径改变。const double pi = 3.14; //pi是个常量,它的值不能改变double* ptr = &pi; //错误 ptr是一个普通指针const double* c...

2019-03-08 10:43:52 526

转载 线程安全的单例模式

线程安全的单例模式#include &lt;pthread.h&gt; //Linux中使用线程#if 0单例模式指一个类只允许有一个实例,类型分为懒汉模式和饿汉模式实现方法:构造函数声明为private或protect防止被外部函数实例化,内部保存一个private static的类指针保存唯一的实例,实例的动作由一个public的类方法代劳,该方法也返回单例类唯一的实例...

2019-03-06 21:40:05 93

空空如也

空空如也

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

TA关注的人

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