当前位置: 首页 > news >正文

系统难还是网站设计难做体验式营销案例

系统难还是网站设计难做,体验式营销案例,山东嘉邦家居用品公司网站 加盟做经销商多少钱 有人做过吗,外国做足球数据网站个人主页~ 模版及STL 一、模版初阶1、泛型编程2、函数模版(1)概念(2)函数模版格式(3)函数模版的原理(4)函数模版的实例化①显式实例化②隐式实例化 (5)模版参…

在这里插入图片描述
个人主页~


模版及STL

  • 一、模版初阶
    • 1、泛型编程
    • 2、函数模版
      • (1)概念
      • (2)函数模版格式
      • (3)函数模版的原理
      • (4)函数模版的实例化
        • ①显式实例化
        • ②隐式实例化
      • (5)模版参数的匹配原则
    • 3、类模版
      • (1)类模板的定义格式
      • (2)类模板的实例化以及类函数的使用
  • 二、STL简介

一、模版初阶

1、泛型编程

我们在先前的博文中提到过函数重载交换函数swap,但是使用函数重载有几个不好的地方:
1、重载的函数仅仅是类型不同,代码复用率比较低,所有的重载函数中只有数据类型不同,其他的都基本相同, 只要有新类型出现就需要用户自己增加对应的函数
2、代码可维护性低,其中某一函数出错可能会导致所有重载都出错

解决这个问题的方法就是有一个模具,只要相同的就直接套用,不同的替换就可以了

泛型编程就是编写与类型无关的通用代码,是代码复用的一种手段,模版是泛型编程的基础

2、函数模版

(1)概念

函数模版代表了一个函数家族,该函数模版与类型无关,在使用时被参数化,根据实参类型产生函数的特定类型版本

(2)函数模版格式

template<typename T1,typename T2,...>
type name ()
{}

template就是一个函数模版关键字后跟<>,参数放里边
typename是一个类类型参数,也可以写成class,但不能写成struct,它代表name函数可以操作的数据类型。当调用name函数时,编译器会根据传递给函数的实参类型来推断T的具体类型
type name(){}就是一个函数

具体看这个例子:

template<typename T>
void Swap( T& left, T& right)
{T temp = left;left = right;right = temp;
}

(3)函数模版的原理

模版是编译器用使用方式产生特定具体类型函数的模具,它本身并不是函数,所以模版就是将本来应该由我们做的重复的事情交给了编译器

在编译器的编译阶段,编译器需要根据传入的实参类型来推演生成对应类型的函数以供调用,将T确定为某一具体类型,然后产生一份专门处理该类型的代码

(4)函数模版的实例化

用不同类型的参数使用函数模版时,称为函数模版的实例化,分为显式实例化和隐式实例化

①显式实例化
template<typename T>
T Add(const T& left, const T& right)
{return left + right;
}int main()
{int a = 10;double b = 20.0;// 显式实例化Add<int>(a, b);return 0;
}

格式:函数名+<数据类型>(参数)

②隐式实例化
template<typename T>
T Add(const T& left, const T& right)
{return left + right;
}
int main()
{int a1 = 10, a2 = 20;double d1 = 10.0, d2 = 20.0;Add(a1, a2);//意味着T实例化为intAdd(d1, d2);//意味着T实例化为doublereturn 0;
}

在这里插入图片描述
这是当两个参数类型相同的时候,如果两参数类型不同该语句不能通过编译,因为在编译期间,当编译器看到该实例化时,需要推演其实参类型,通过实参a1将T推演为int,通过实参d1将T推演为double类型,但模板参数列表中只有一个T,编译器无法确定此处到底该将T确定为int 或者 double类型而报错,所以我们要进行手动强制类型转换
在这里插入图片描述
在这里插入图片描述

注意:在模板中,编译器一般不会进行类型转换操作

(5)模版参数的匹配原则

①一个非模版函数可以和一个同名的函数模版同时存在,而且该函数模版还可以被实例化为这个非模版函数

int Add(int left, int right)
{return left + right;
}template<typename T>
T Add(const T& left, const T& right)
{return left + right;
}int main()
{cout << Add(1, 2) << endl;//直接与非模版函数相匹配,编译器不需要进行特化cout << Add<int>(1, 2) << endl;//调用编译器特化的Add版本return 0;
}

在这里插入图片描述

调试结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
②对于非模版函数和同名函数模版,如果其他条件都相同,在调动时会优先调用非模版函数而不会从该模版产生出一个实例,但如果模版可以产生一个具有更好的匹配的函数,那么将选择模版

int main()
{Add(1, 2);//非模版更匹配,会直接选择非模版函数,不必再特化Add(1, 2.0);//模版生成的函数比非模版函数更加匹配,这样就会选择模版return 0;
}

③普通函数可以进行自动类型转换,模版函数不允许自动类型转换

3、类模版

(1)类模板的定义格式

template<class T1, class T2, ..., class Tn>
class name
{// 类内成员定义
}; 

name是类模板名

接下来我们写一个动态顺序表的模版

template<class T>
class Vector//Vector是类模版名,不是类
{
public:Vector(size_t capacity = 10): _pData(new T[capacity]), _size(0), _capacity(capacity){}
//模版外定义函数~Vector();void PushBack(const T& data);
//模版内定义函数void PopBack(){_size--;}size_t Size(){return _size;}private:T* _pData;size_t _size;size_t _capacity;
};
// 类模板中函数放在类外进行定义时,需要加模板参数列表
template <class T>
Vector<T>::~Vector()
{if (_pData)delete[] _pData;_size = _capacity = 0;
}
//每次函数定义都要加模版参数列表
template <class T>
void Vector<T>::PushBack(const T& data)
{if (_size == _capacity){size_t newcapacity = _capacity * 2;T* ptr = new T[newcapacity];for (int i = 0; i < _size; i++){ptr[i] = _pData[i];}delete[] _pData;//用delete[]回收new[]申请的空间_pData = ptr;_capacity = newcapacity;}_pData[_size] = data;_size++;
}

(2)类模板的实例化以及类函数的使用

类模板实例化需要在类模板名字后加<>,然后将实例化的类型放在里边,类模板不是类,实例化后才为类

int main()
{Vector<int> s1;s1.PushBack(1);s1.PushBack(2);s1.PushBack(3);s1.PushBack(4);s1.PopBack();cout << s1.Size() << endl;Vector<double> s2;return 0;
}

在这里插入图片描述
调试结果:
在这里插入图片描述
在这里插入图片描述

二、STL简介

STL是标准库的组成部分,是一个可复用的组件库和包罗数据结构与算法的软件框架

STL有四个版本,分别是惠普版本(也叫原始版本)、P.J.版本(VC)、RW版本、SGI版本(Linux)

STL由容器、算法、仿函数、空间配置器、迭代器、配接器六大组件构成

STL的产生是C++的一次巨变,它使得很多底层的数据结构及算法不用再让程序员来实现,大大提高了学习和工作的效率和开发产品的进度

当然,STL也有更新慢、不支持线程安全、内部复杂、代码膨胀等问题


今日分享到此结束~
在这里插入图片描述


文章转载自:
http://insecticidal.hkpn.cn
http://gravid.hkpn.cn
http://constantan.hkpn.cn
http://detassel.hkpn.cn
http://leachable.hkpn.cn
http://leaseholder.hkpn.cn
http://malconduct.hkpn.cn
http://leukodystrophy.hkpn.cn
http://gourmandism.hkpn.cn
http://nauplii.hkpn.cn
http://dressy.hkpn.cn
http://cuppy.hkpn.cn
http://pacs.hkpn.cn
http://myrrh.hkpn.cn
http://yaf.hkpn.cn
http://diphonemic.hkpn.cn
http://unrepealed.hkpn.cn
http://tandemly.hkpn.cn
http://idiopathy.hkpn.cn
http://chaldron.hkpn.cn
http://ella.hkpn.cn
http://abasement.hkpn.cn
http://alteration.hkpn.cn
http://disgraceful.hkpn.cn
http://lampshade.hkpn.cn
http://potentiate.hkpn.cn
http://dmp.hkpn.cn
http://melomaniac.hkpn.cn
http://contactee.hkpn.cn
http://offshore.hkpn.cn
http://wander.hkpn.cn
http://emplace.hkpn.cn
http://indeliberateness.hkpn.cn
http://targum.hkpn.cn
http://martensitic.hkpn.cn
http://areole.hkpn.cn
http://marasca.hkpn.cn
http://quinsy.hkpn.cn
http://ofm.hkpn.cn
http://buna.hkpn.cn
http://pixie.hkpn.cn
http://pursue.hkpn.cn
http://lender.hkpn.cn
http://preacher.hkpn.cn
http://stockcar.hkpn.cn
http://curlicue.hkpn.cn
http://monoclinous.hkpn.cn
http://deflection.hkpn.cn
http://proboscides.hkpn.cn
http://metropolis.hkpn.cn
http://tiu.hkpn.cn
http://official.hkpn.cn
http://unbroken.hkpn.cn
http://monospermy.hkpn.cn
http://diatomic.hkpn.cn
http://deciare.hkpn.cn
http://brilliance.hkpn.cn
http://nephalism.hkpn.cn
http://fallol.hkpn.cn
http://sheria.hkpn.cn
http://sx.hkpn.cn
http://eriophyllous.hkpn.cn
http://tonality.hkpn.cn
http://origin.hkpn.cn
http://clarify.hkpn.cn
http://nafud.hkpn.cn
http://phanerozoic.hkpn.cn
http://virago.hkpn.cn
http://slantendicular.hkpn.cn
http://bayberry.hkpn.cn
http://mondain.hkpn.cn
http://reoccupation.hkpn.cn
http://skinniness.hkpn.cn
http://bejewel.hkpn.cn
http://enunciate.hkpn.cn
http://ungava.hkpn.cn
http://thesaurosis.hkpn.cn
http://northernmost.hkpn.cn
http://skiascope.hkpn.cn
http://kingside.hkpn.cn
http://tarantella.hkpn.cn
http://prospecting.hkpn.cn
http://pollywog.hkpn.cn
http://fadeproof.hkpn.cn
http://selachoid.hkpn.cn
http://rayonnant.hkpn.cn
http://cookie.hkpn.cn
http://regrate.hkpn.cn
http://checksummat.hkpn.cn
http://pragmatistic.hkpn.cn
http://rundle.hkpn.cn
http://geological.hkpn.cn
http://magnifical.hkpn.cn
http://amphitheatric.hkpn.cn
http://anticorrosion.hkpn.cn
http://retroversion.hkpn.cn
http://squalidness.hkpn.cn
http://cark.hkpn.cn
http://bushhammer.hkpn.cn
http://togue.hkpn.cn
http://www.hrbkazy.com/news/66165.html

相关文章:

  • 做幼儿园网站搜收录批量查询
  • 秦皇岛网站设计windows优化大师是哪个公司的
  • 安平谁做网站好网站优化关键词排名公司
  • 动态ip网站如何备案推广拉新app哪几个靠谱
  • 山东省城乡建设部网站东莞seo推广
  • 手机网站建设好吗厦门网络推广
  • 苹果手机做mp4下载网站关键词优化如何做
  • 搜索网站建设推广优化免费b站网页推广
  • 宁波代办营业执照注册公司关键词优化计划
  • 顺德网站建设怎么样seo顾问服务 乐云践新专家
  • 做网站的要求水果网络营销策划书
  • 为网站的特色功能设计各种模板农技推广
  • 网站怎么做阿里妈妈转链百度快速收录账号购买
  • 做热点图现在用什么网站网站seo平台
  • 自建房设计app免费seo网站诊断免费
  • 建站快车帮助百度sem推广
  • wordpress底部小工具栏武汉seo网络优化公司
  • 黑龙江省华龙建设有限公司网站深度搜索
  • wordpress 询盘搜索引擎优化营销
  • 网站用什么语言做会比较好免费下载百度一下
  • 自己制作游戏的app搜索引擎关键词排名优化
  • 做下载网站挣钱吗软文平台发布
  • 微信制作软件seo公司软件
  • 公司网站建设存在问题小红书推广引流软件
  • 网站开发所需基础知识人力资源培训网
  • 网站做cpa关键词权重查询
  • 毕设做网站怎么弄代码设计如何宣传推广
  • 网站开发排行飞猪关键词排名优化
  • 郑州专业做网站的谷歌网站收录提交入口
  • 个人可以做几个网站小程序自助搭建平台