c++
文章平均质量分 52
维克Tor
这个作者很懒,什么都没留下…
展开
-
c++ 二叉排序树
二叉树在使用链表的时候,我们碰到的问题都是一对一的线性结构,然而当碰到一对多的时候,链表就无法使用。此时我们需要一对多的数据结构——树。树是非线性的数据结构。现实生活的树长这样而今天要介绍的二叉树和树确实长得很像。关于二叉树的性质每个节点最多可以有两个子节点,并且子树都有左右之分,次序不能颠倒。二叉树的第i层最多有2的i次方-1个节点,第一层为图中最上层A,往下依次增加。深度为n的二叉树,最多有2的n次方-1个节点,深度就是从上往下的层数,图中A为一层,BC为一层,DEFG为一层,所原创 2021-12-06 18:19:11 · 913 阅读 · 0 评论 -
c++ 多线程
线程的基本了解线程是被CPU执行调度的最小单位。被包含于进程中。例如打开网页时,可以打开一个网页,也可以点击+号打开第二个网页。每一个网页都是一个多线程,而整个程序被称为多进程。所以每个进程至少包含一个线程。c++98中没有明确的提出线程这一概念,直到c++11中引入了线程技术。在使用线程时,需要引入头文件thread。创建一个线程void fun1()//线程1{ cout << "这是一个线程" << endl;}void fun2(int num)原创 2021-11-25 22:43:02 · 699 阅读 · 0 评论 -
c++ static_cast等强制类型转换
static_cast原型:static_cast < type-id > ( expression )type-id:代表想转换为的数据类型expression :代表所想转换的变量该转换符有以下几个特点大多数用于数值类型数据的类型转换不执行运行时的类型检查,因此安全性较低。用于非多态类型的转换int main(){ double a = 1.34; int b = static_cast<int>(a); cout<<原创 2021-11-13 19:44:16 · 1090 阅读 · 0 评论 -
c++ Lambda语法
Lambda看似很难懂的语法,其实就是一个函数,只是这个函数省略了名字。#include<iostream>using namespace std;int main(){ auto demo = []()->int {}; return 0;}上段代码中,就是一个lambda表达式的基础语法demo是一个Lambda表达式的一个对象。可以理解为相当于函数名,[]中则是代表了形参的类型下面将会一一介绍。()中则是引用的形参列表,->后面为返回值的类型,{}原创 2021-11-11 14:08:00 · 551 阅读 · 0 评论 -
c++11 Lambda浅显实战理解
c++11 Lambda表达式先看一个使用Lambda和不使用Lambda的区别例:#include <iostream>#include <vector>#include <cmath>#include <algorithm>using namespace std;bool f3(int x){ return x % 3 == 0;}int main(){ int count = 0; vector<int>原创 2021-11-09 22:35:10 · 713 阅读 · 0 评论 -
c++ 单例模式
单例模式单例模式很明显,就是只能存在一个实例。所以随之想到的就是将类的构造函数变成私有函数,这样外界就无法创建实例对象。那么应该在什么时候生成实例对象呢?此时就分成了单例模式的两种不同方案。饿汉模式可以把一个类想象成一家蛋糕店,饿汉很饿,所以进蛋糕店时就要立刻消费,买东西吃。所以,饿汉模式在类创建时就生成了对象。 #include<iostream>using namespace std;class Singleton{private: Singleton() { co原创 2021-11-08 23:24:29 · 88 阅读 · 0 评论 -
c++ 工厂模式
在熟悉工厂模式之前,首先要明白在写c++程序前的六大准则开闭原则:不修改已存在代码,只添加代码。依赖倒转原则:不用具体类解决问题,使用抽象类。(隔离变化,封装变化)里氏代换原则:任何基类可以出现的地方,子类一定可以出现。接口隔离原则:使用接口抽离逻辑,目的也是为了降低耦合。迪米特法则:类和类之间不发生相互作用,使得功能互相独立。单一职责原则:一个类只有一个可以引起它变化的原因工厂模式分为三类,以下将会介绍简单工厂和工厂模式简单工厂只有一个抽象类,所以它存在的缺点是工厂类中集中了所有的创原创 2021-11-08 22:15:36 · 1450 阅读 · 0 评论 -
c++11 智能指针
c++11 智能指针c++中时常发生内存泄漏问题,在c++98中引入了auto_ptr指针,然而在c++11中已经摒弃了auto_ptr,新引入了三种智能指针模板(shared_ptr、unique_ptr、weak_ptr)。首先我们需要了解内存是如何分配的?void demo1(){ int * pd = new int; *pd = 10; return;}demo1中,未使用任何智能指针。变量的分配步骤为三步,如此pd的内存并没有被释放。为pd和一个int值分配存储空间将值原创 2021-11-06 01:55:41 · 80 阅读 · 0 评论