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

阳泉哪里做网站网站和公众号的区别是什么

阳泉哪里做网站,网站和公众号的区别是什么,中国建设工程信息网官网查询,外贸建立网站怎么做目录 一. 泛型编程 二. 函数模板 1. 概念 2. 函数模版格式 3. 函数模版的原理 4. 模版函数的实例化 (1). 隐式实例化 (2.) 显式实例化 5. 模版参数的匹配原则 三. 类模板 1. 类模板的定义格式 2. 类模板的实例化 四. STL的介绍 1. 什么是STL#xff1f; 2. STL的版…目录 一. 泛型编程 二. 函数模板 1. 概念 2. 函数模版格式 3. 函数模版的原理 4. 模版函数的实例化 (1). 隐式实例化 (2.) 显式实例化 5. 模版参数的匹配原则 三. 类模板 1. 类模板的定义格式 2. 类模板的实例化 四. STL的介绍 1. 什么是STL 2. STL的版本 3. STL的六大组件 一. 泛型编程 我们之前实现一个交换函数不同的类型就要用多个函数我们学了函数重载比C语言时期方便了一点不用想函数名了 如下代码 void Swap(int xxxx, int yyyy) {int temp xxxx;xxxx yyyy;yyyy temp; } void Swap(double xxxx, double yyyy) {double temp xxxx;xxxx yyyy;yyyy temp; } void Swap(char xxxx, char yyyy) {char temp xxxx;xxxx yyyy;yyyy temp; }但是呢仍然有很多不好的地方: 1. 重载的函数仅仅是类型不同代码复用率比较低只要有新类型出现时就需要用户自己增加对应的函数 2. 代码的可维护性比较低一个出错可能所有的重载均出错 那么能不能告诉编译器一个模子让编译器根据不同类型利用模子来生成代码呢 泛型编程编写与类型无关的通用代码是代码复用的一种手段。模板是泛型编程的基础。 二. 函数模板 1. 概念 函数模版代表一个函数家族该函数模版与类型无关在使用时被参数化根据实参类型产生函数的特定类型版本。 2. 函数模版格式 templatetypename T1,typename T2,..........,typename Tn 返回值类型  函数名 (参数列表) {} 如以下代码所示 template typename T void Swap(T xxxx, T yyyy) {T temp xxxx;xxxx yyyy;yyyy temp; } typename 是用来定义模板参数关键字也可以使用class(尤其注意不要用struct替代class) 如下 template class T void Swap(T xxxx, T yyyy) {T temp xxxx;xxxx yyyy;yyyy temp; } 3. 函数模版的原理 函数模版是一个蓝图它本身不是函数是编译器根据使用方式产生特定具体类型函数的模具。所以其实模版就是将原本应该我们做的重复的事情交给了编译器。 在编译器编译阶段对于模版函数的使用编译器需要根据传入的实参类型来推演生成对应类型的函数以供调用。 假如主函数代码如下 int main() {int x1 1;int y1 32;Swap(x1, y1);return 0; }int 类型推演 处理代码为 void Swap(int xxxx, int yyyy) {int temp xxxx;xxxx yyyy;yyyy temp; }假如主函数内容如下 int main() {char x2 11;char y2 33;Swap(x2, y2);return 0; } char类型推演 处理代码为 void Swap(char xxxx, char yyyy) {char temp xxxx;xxxx yyyy;yyyy temp; } 当用 double 类型使用函数模版时编译器通过对实参类型的推演将T确定为double类型然后产生一份专门处理double类型的代码 4. 模版函数的实例化 用不同类型的参数使用函数模版时称为函数模版的实例化。模版参数实例化分为隐式实例化和显式实例化。 (1). 隐式实例化 让编译器根据实参推演模板参数的实际类型 #includeiostream using namespace std;template typename T T Add(const T left, const T right) {return left right; } int main() {int a1 10, a2 11;double d1 11.11, d2 7.007;Add(a1,d1 );Add(a2, d2); return 0; } 上述代码不能通过编译因为在编译期间当编译器看到该实例化时需要推演其实参类型 通过实参a1将T推演为int 通过实参d1将T推演为double类型但模版参数列表中只有一个T编译器无法确定此处到底该将T确定为int或double类型而报错  注意在模版中编译器一般不会进行类型转换操作因为一旦转换出问题编译器就需要背黑锅 此时有两种解决方法1. 用户手动强制类型转换 2.  使用显式实例化 Add(a1,(int)d1); Add((double)a2,d2); (2.) 显式实例化 在函数名后的中指定模版参数的实际类型 int main() {int a1 10, a2 11;double d1 11.11, d2 7.007;Addint(a1,d1 );Adddouble(a2, d2);return 0; } 如果类型不匹配编译器会尝试进行隐式类型转换如果无法转换成功编译器将会报错。 5. 模版参数的匹配原则 一个非模版函数可以和一个同名的函数模板同时存在而且该函数模板还可以被实例化为这个非模板函数 如以下代码 #includeiostream using namespace std; template typename T T Add(const T left, const T right) {return left right; } int Add(const int x, const int y) {return (x y) * 10; }int main() {int a1 10, a2 11;double d1 11.11, d2 7.007;cout Add(1, 2) endl;cout Addint(2, 2) endl; } 其结果为 我们发现与若与非模板函数匹配编译器不需要特化 若显式实例化则调用编译器特化的Add版本 对于非模板函数和同名函数模板如果其他条件都相同在调动时会优先调用非模板函数而不会从该模板中产生一个实例。如果模板可以产生一个具有更好匹配的函数那么将选择模板 #includeiostream using namespace std;int Add(const int x, const int y) {return (x y) * 10; } template typename T1,class T2 T2 Add(const T1 left, const T2 right) {return left right; } int main() {int a1 10, a2 11;double d1 11.11, d2 7.007;cout Add(1, 2) endl;cout Add(1, 2.1) endl;return 0; } 模板函数不允许自动类型转换但普通函数可以进行自动类型转换  template typename T1 T1 Add(const T1 left, const T1 right) {return left right; } int main() {int a1 10, a2 11;double d1 11.11, d2 7.007;char c1 a;Add(1, 2.1);Add(d1, c1); } 第一个Add函数 2.1不会自动转换为int类型1也不会自动转换为double(或float) 第二个同理 d1不会自动转化为char ....... 而普通函数可以 #includeiostream using namespace std;int Add(const int x, const int y) {return (x y) * 10; }int main() {float a10.11;int a1 10, a2 11;double d1 11.11, d2 7.007;char c1 a;Add(1, 2.1);Add(d1, c1); } 第一个Add函数2.1 自动进行了类型转换变为int类型 第二个Add函数的d1 自动类型转换变为了int类型c1也转化为了int类型 三. 类模板 1. 类模板的定义格式 template class T1,class T2,.....class Tn class 类模板名 {     //类内成员定义 }; 如下代码 #includeiostream #includecstring using namespace std;template typename T class Stack { public:Stack(size_t capacity 4):_arr(new T[capacity]),_capacity(capacity),_size(0){}void Push(const T data){if (_size _capacity){T* tmp new T [_capacity*2];memcpy(tmp, _arr, sizeof(T)*_size);delete[] _arr;_arr tmp;_capacity * 2;}_arr[_size] data;}T Top(){return _arr[_size-1];}~Stack(){delete[] _arr;_arr nullptr; _size _capacity 0;} private:T* _arr;size_t _capacity;size_t _size; }; 而类的成员函数要在类外实现时需要注意 再写一个模板因为类上面的模版只针对类内 假如 将Push类内声明类外定义代码如下 class Stack { public:Stack(size_t capacity 4):_arr(new T[capacity]),_capacity(capacity),_size(0){}void Push(const T data);T Top(){return _arr[_size-1];}~Stack(){delete[] _arr;_arr nullptr; _size _capacity 0;} private:T* _arr;size_t _capacity;size_t _size; };template typename T void StackT::Push(const T data) {if (_size _capacity){T* tmp new T[_capacity * 2];memcpy(tmp, _arr, sizeof(T) * _size);delete[] _arr;_arr tmp;_capacity * 2;}_arr[_size] data; } int main() {Stackint s1;s1.Push(1);cout s1.Top() endl;s1.Push(5);cout s1.Top() endl;s1.Push(12);cout s1.Top() endl;s1.Push(11);cout s1.Top() endl;s1.Push(2);cout s1.Top() endl;s1.Push(3);cout s1.Top() endl;return 0; } 下面的模板参数 也可以不叫T 这两个T实际上就是代号为什么是StackT:: 可以看下一条模板的实例化 模板不建议声明和定义分离到两个文件.h 和.cpp 会出现链接错误具体原因后面会讲 2. 类模板的实例化 类模板实例化与函数模板实例化不同类模板实例化需要在类模板名字后跟然后将实例化的类型放在中即可类模板名字不是真正的类,而实例化的结果才是真正的类 //其中Stack是类名Stackint、Stackchar、Stackdouble才是类型Stackint s1;Stackdouble s2;Stackchar s3; 四. STL的介绍 1. 什么是STL STL(standard template libaray-标准模板库): 是C标准库的重要组成部分不仅是一个可复用的组件库而且是一个包罗数据结构与算法的软件框架。 2. STL的版本 原始版本 Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版本本着开源精神他们声明允许 任何人任意运用、拷贝、修改、传播、商业使用这些代码无需付费。唯一的条件就是也需要向原 始版本一样做开源使用。 HP 版本--所有STL实现版本的始祖。 P.J.版本 由P. J. Plauger开发继承自HP版本被Windows Visual C采用不能公开或修改缺陷可读 性比较低符号命名比较怪异。 RW版本 由Rouge Wage公司开发继承自HP版本被C Builder 采用不能公开或修改可读性一 般。 SGI版本 由Silicon Graphics Computer SystemsInc公司开发继承自HP版 本。被GCC(Linux)采用可 移植性好可公开、修改甚至贩卖从命名风格和编程 风格上看阅读性非常高。 3. STL的六大组件 这篇文章就写到这里啦喜欢点一下赞吧~~ (๑′ᴗ‵๑) Lᵒᵛᵉᵧₒᵤ❤
http://www.hkea.cn/news/14430217/

相关文章:

  • 免费的ppt网站泰州企业建站系统
  • 网站建站网站626969自己做一个购物网站
  • 英文网站报价wordpress 月光博客
  • 毕业设计网站源码石家庄建站工具
  • 张掖市作风建设年活动网站旅游网站设计模板
  • 深圳网站维护优化杭州网站开发后端招
  • 做网站要自己租服务器网站建设理论基础
  • 网站都需要什么类别上海十大营销策划公司排名
  • 百度如何把网站做链接深圳市建设工程交易服务
  • 国外科技类网站邢台网站制作哪里有
  • 泸州住房和城乡建设厅网站首页网络营销从网站建设开始
  • 网站开发+自动生成缩略图手机网站怎么做推广
  • 可以自己做课程的网站百度站长平台提交网站
  • 请问下网站开发怎么弄通用网址通用网站查询
  • 卡片式设计网站公司招牌制作价格
  • 南京代做网站怎么注销网站
  • 和县网站建设有哪些网站是静态网站
  • php手机网站制作制作网页时通常需要在同一网页内跳转常常采用制作什么超链接
  • 东西湖区网站建设公司seo整站优化新站快速排名
  • 乐山做美食推荐的网站教学网站建设论文
  • 简约 网站模板建设小学网站
  • 免费网站在线制作开通公司网站怎么开通
  • 机械设备网站建设那个网站做足球测
  • 成品网站速成网站网站查外链
  • 只做移动端的网站贵阳做网络平台的公司
  • 惠州的服装网站建设到那里找做网站的兼职
  • 有人在相亲网站骗人做传销济南网络seo公司
  • 全国有哪些做服装的网站烟台建网站哪家好
  • 网站开发需要团队徐州网站建设多少钱
  • 永久网站建设怎么提高网站速度