STL
HOVL_C++
这个作者很懒,什么都没留下…
展开
-
设计模式---观察者模式
观察者模式首先看一下他的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。然后看一下菜鸟教程的有缺点优点: 1、观察者和被观察者是抽象耦合的。 2、建立一套触发机制。缺点: 1、如果一个被观察者对象有很多的直接和间接的观察者的话,将所有的观察者都通知到会花费很多时间。 2、如果在观察者和观察目标之间有循环依赖的话,观察目标会触发它们之间进行循环调用,可能导致系统崩溃。 3、观察者模式没有相应的机制让观察者知道所观察的目标对象是怎么发生原创 2021-11-10 16:59:23 · 335 阅读 · 0 评论 -
设计模式----单例模式
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。注意:1、单例类只能有一个实例。2、单例类必须自己创建自己的唯一实例。3、单例类必须给所有其他对象提供这一实例。使用场景:1、要求生产唯一序列号。2、WEB 中的计数器,不用每次刷.原创 2021-10-28 16:39:04 · 212 阅读 · 0 评论 -
C++11 auto的应用
auto 自动类型推导C++11之前和c语言 auto用来声明变量的存储类型(自动变量 栈区)在编译期间 编译器能够根据变量或者表达式推导七类型auto 与 const 时: 普通数据在推导时const属性会被抛弃 但是指针或者引用有const时 自动推导时不会抛弃auto的限制: 1.不能用于函数的参数列表 2.auto不能作用于类的非静态成员 3.auto 关键字不能定义数组 4.auto不能作用于模板参数auto的应用 1.for循环 for(auto& var:原创 2021-10-19 11:00:44 · 271 阅读 · 0 评论 -
C++ 容器详解
首先说一下六大组件:算法,容器,迭代器,仿函数(函数对象),分配器,适配器简述:线性容器:vector(向量): 好比C语言中数组 顺序表 seqtable(a)内存连续 支持[]运算符 下标访问(b)动态内存管理 自动扩容(c)通过分配器来管理动态内存 预分配内存空间 减少动态内存管理的额外开销(d)可以随机位置做插入和删除,但只有在接近末尾进行插入和删除时才是高效的预分配内存和初始化vector v3(10); //10个int元素,初始值为0vec原创 2021-10-17 10:05:27 · 3215 阅读 · 1 评论 -
STL全特化 偏特化 成员特化
模板有两种特化,全特化和偏特化(局部特化)模板函数只能全特化,没有偏特化(以后可能有)。模板类是可以全特化和偏特化的。全特化:template<>class cla_template_name<特化类型>{ };成员特化:template<>ret_type cla_template_name<特化类型>::memb_func_name(arglist,..){ }类模板在实例化时一定要显示类型实例化类模板可以有缺省类型,原创 2021-10-03 09:38:37 · 145 阅读 · 0 评论 -
STL模板实现stack
#include <iostream>#include <stdexcept>using namespace std;//类模板template<typename T=int>class Stack{private: T *elems; size_t size; size_t cap;public: Stack(size_t cap = 10):cap(cap){ elems = new T[cap]; size = 0; } ~Stac原创 2021-10-02 10:01:31 · 120 阅读 · 0 评论 -
C++类模板的基础
类模板不能根据参数进行类型推导实例化模板类,只能显示#include <iostream>using namespace std;template<typename T>T msum(T a,T b){ return a+b; }int main(){ cout << msum(1,2) << endl; //cout << msum(1,3.1) << endl; //不能根据实参进行类型推导 cout &l原创 2021-10-01 10:10:39 · 83 阅读 · 0 评论 -
C++ STL实现sort
sort#include <iostream>#include <algorithm>using namespace std;template<typename T>void mswap(T& t1,T& t2){ T t = t1; t1 = t2; t2 = t;}template<typename T>void msort(T elems[],size_t cnt){ for(int i=0;i<cnt原创 2021-10-01 10:02:52 · 111 阅读 · 0 评论 -
C++ 标准模板库STL初理解
定义标准模板库(Standard Template Library,STL)是惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来的。虽说它主要表出现到C++中,但在被引入C++之前该技术就已经存在了很长时间。STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),几乎所有的代码都采用了模板类和模板函数的方式,这相比于传统的由函数和类组成的库来说原创 2021-09-27 09:01:46 · 96 阅读 · 0 评论