2STL常用算法 概述: 算法主要是由头文件<algorithm><functional><numeric>组成。 <algorithm>是所有STL头文件中最大的一个,范围涉及到比较、交换、查找、遍历操作、复制、修改等等 <numeric>体积很小,只包括几个在序列上面进行简单数学运算的模板函数 <functional>定义了一些模板类,用以声明函数对象。 2.1常用遍历算法 学习目标: 掌握常用的遍历算法 算法简介: for_each//遍历容器 transform//搬运容器到另一个容器中 2.1.1fo...

原型设计模式是一种对象创建型模式,它通过复制现有对象来创建新的对象,而无需显式地调用构造函数。 简单来说,原型设计模式就是通过克隆已有对象来创建新对象。 举一个通俗易懂的例子,假设我们有一个图形库,其中有一个基类Shape表示图形,它有一个纯虚函数draw()用于绘制图形。 现在我们希望能够复制已有的图形对象来创建新的图形对象,而无需重新构造图形对象 //图形基类 classShape{ public: virtualShape(){} virtualvoiddraw()=0; virtualShapeclone()=0; }; //圆形类 classCircle:public...

reinterpret_cast reinterpret_cast<newtype>(expression) 将一个类型的指针转换为另一个类型的指针,它允许从一个指针转换为整数类型。 voidtest01(){ chara=0; intp=reinterpret_cast<int>(&a); //不安全 } const_cast 常量const指针与普通指针之间的相互转化。 如果不用const_cast:一般编译器直接报错。 用const_cast之后 voidtest02(){ constinta=4; intb=10; //i...

上节说到C提供的四种强制转换函数reinterpret_cast,const_cast,static_cast,dynamic_cast,在特定的场景下非要使用的话才用,因为都不安全,操作不当会造成额外的麻烦 那么这一节我们讲一讲怎么样安全的将类型转换 答案其实很简单,就是C里面的运算符重载。 在C这种强大的OOP语言中给予了程序员们很大的自主能动性,比如,如果你绝对C库中的功能不安全,不强大,完全可以自己去实现安全,强大的功能。 比如STL容器库中的容器非线程安全,那就自己再封装一个线程安全的类嘛 同样的道理,C提供的类型强制转换函数不安全,那就自己去封装运算符重载就行了。 代码示例: /...

与前几篇常用的的创建型设计模式(单例模式,工厂模式)不同,今天要说的是常用的结构型模式之一:代理模式 在说代理模式之前,回顾一下创建型设计模式,创建型模式它的主要特点是“将对象的创建与使用分离“。在类对象的创建上更加的灵活。 那么结构型模式又有什么不同呢? 结构型模式关注类和对象的组命。继承的概念被用来组合接口和定义组合对象获得新功能的方式。 代理模式为其他对象提供一种代理以控制对这个对象的访问。 简单来说,在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 代理对象⻆色内部含有对真实对象的引用,从而可以操作真实对象, 同时代理对象...

1什么是工厂模式? 工厂模式,顾名思义,就是把将对象的实例化过程封装在工厂类中的方式。工厂负责生产相应的对象实例。 一般分为两种工厂模式:简单工厂;抽象工厂 优点: 用户不需要解决具体的细节问题,利用工厂类进行生产产品细节; 可以将对象的创建与使用代码分离,提供一种统一的接口来创建不同类型的对象。 创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。 缺点:简单工厂;抽象工厂各有各自的优缺点(后面详细展开) 2简单工厂SimpleFactory UML类图分析: 1、抽象产品(AbstractProduct) 2、产品的具体实现类(Product...

2:懒汉单例模式:用到创建对象时才创建对象;线程非安全但可以通过一些方式变成线程安全; 2.1:获取类对象方式问题:跟饿汉式的异同点: 相同之处: 都是单例模式,一个类只实例化一个对象 类成员:都有静态全局函数和静态全局类指针 创建对象方式:都是通过静态全局类指针指向特定的函数,通过这个静态全局函数来创建对象 不同之处: 创建对象的时机: 饿汉式--静态全局指针在main函数之前先new出对象 懒汉式--静态全局指针初始化为nullptr空指针,当main函数中需要创建对象时调用那个静态函数来创建对象 线程安全与否: 饿汉式--线程...

单例模式: 一个类只实例化一个对象 类的构造函数设置private或者protected 提供一个静态的能获取类对象地址的类指针(用静态类指针指向函数,函数内部获取类对象地址) 线程安全,但不管用不用的上都会先生成对象实例。 饿汉单例模式: 1.1:获取类对象方式问题 1.//静态的类的指针指向getInstence() staticSingleHungryModgetInstence(){ returnobject_; }//调用到getInstence()函数时,返回object_,object_是类指针。 1.2:类对象初始化问题 //初始化-静态的指针SingleH...

关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~