关闭

C++学习笔记04之模板应用简介

标签: 编程语言C++函数class模板
266人阅读 评论(0) 收藏 举报
分类:

C++中的模板应用广泛,下面从三个方面进行简介:


        1. 类模板 class template

        声明:

template<typename T>
class complex
{
public:
	complex (T r = 0, T i = 0)
	  : re (r), im(i)
	{	}
	complex& operator += (const complex&);
	T real () const {	return re;	}
	T img () const { return im;	}
private:
	T re, im;

	friend complex& _doapl (complex*, const complex&);
};
        使用举例:

{
	complex<double> c1(2.5, 1.5);
	complex<int> c2(2, 6);
	...
}


        2. 函数模板

        声明:

template <class T>
inline const T& min(const T& a, const T& b)
{
	return b < a ? b : a;
}

class stone
{
public:
	stone(int w, int h, int we)
	  : _w(w), _h(h), _weight(we)
	  {	}
	bool operator< (const stone& rhs) const
	{
		return _weight < rhs._weight;
	}

private:
	int _w, _h, _weight;
};
        使用举例:

{
	stone r1(2, 3), r2(3, 3), r3;
	r3 = min(r1, r2);
	...
}

        3. 成员模板

        声明:

class Base1 {	};
class Derived1: public Base1 {  };
class Base2 { };
class Derived2: public Base2 {  };

pair<Derived1, Derived2> p;
pair<Base1, Base2> p2(p);
// pair<Base1, Base2> p2(pair<Derived1, Derived2>());

template <class T1, class T2>
struct pair {
...
	T1 first;
	T2 second;
	pair() : first(T1()), second(T2()) {}
	pair(const T1& a, const T2& b) :
		first(a), second(b) {}
		
	template<class U1, class U2>
	pair(const pair<U1, U2>& p) :
		first(p.first), second(p.second) {}
};






0
0
查看评论

C++ 模板应用浅析

模板的四大场景 1.数据类型与算法相分离的泛型编程 2.类型适配Traits 3.函数转发 4.元编程
  • cyxisgreat
  • cyxisgreat
  • 2014-07-19 14:03
  • 1539

C++模板之特化与偏特化详解

前言 说到C++模板,这个已经不是什么新东西了,自己在实际开发中也用过;对于C++模板特化和偏特化,对于别人来说,已经不是什么新东西了,但是对于我来说,的确是我的盲区,那天在群里讨论这个问题,自己对于这部分确实没有掌握,又联想到在《STL源码剖析》一书中,对于此也是有着介绍。所以,今天就对此进行详...
  • ywcpig
  • ywcpig
  • 2016-09-14 18:51
  • 743

模板和学习笔记

-----------------------------------点分治一般步骤:1.找到树的重心(避免当树退化成链时复杂度升高)2.从重心出发分治统计路径分治过程:统计当前节点子树中的符合条件的路径数加到ans中标记当前点避免重复减去当前节点子树节点中的符合条件的路径数(这样剩下的就是经过当前...
  • qq_35878547
  • qq_35878547
  • 2017-07-10 17:37
  • 217

04:错误探测

原题链接 总时间限制: 1000ms 内存限制: 65536kB 描述 给定n*n由0和1组成的矩阵,如果矩阵的每一行和每一列的1的数量都是偶数,则认为符合条件。  你的任务就是检测矩阵是否符合条件,或者在仅改变一个矩阵元素的情况下...
  • mayuan2017
  • mayuan2017
  • 2017-09-26 09:09
  • 304

《C++设计新思维——泛型编程与设计模式之应用》读后感

这是我第三遍学习这本书了,第一遍是大概是在06年,当时在公司的图书馆中无意中看到这本书,打算学习一下,结果,只看了前几章就看不下去了,实在太难了。07年我在福州路的清华书店又看到这本书,考虑再三,觉得还是有必要买一本,有空再学习一下,然后我抽空又看了一遍,这次是基本一本书完整的看下来了,虽然中间还是...
  • swordmanwk
  • swordmanwk
  • 2011-01-18 19:37
  • 4976

C++学习笔记之模板

函数模板 template参数列表> 例子1:函数模板例子  template void sortArray(ElementType b[], int len) { for (int pass = 0; pass < len - 1; pass ++ ) for...
  • princes_fan
  • princes_fan
  • 2012-07-28 19:17
  • 121

C++学习笔记之:模板

我大学的C++都还给敬爱的胡敏老师了,但是由于工作需要,还是要进行C++开发的,所以在这里拾起来 1.1 模板函数 #include #include using namespace std; template UDEF add2(UDEF a, UDEF b) { UDEF c; c ...
  • moest
  • moest
  • 2015-05-11 15:02
  • 187

C++语言(一)——C++简介

C++语言(一)——C++简介一、C++简介    C语言作是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言并不合适。为了解决软件危机, 20世纪80年代, 计算机界提出了OOP(object or...
  • A642960662
  • A642960662
  • 2017-03-26 12:45
  • 644

Python 学习笔记之一——Python简介

Python学习一 (Python简介)
  • Jeff_Liu_Sky
  • Jeff_Liu_Sky
  • 2016-08-01 16:15
  • 1236

《COM原理与应用》学习笔记

 为了学习ActiveX插件的编写,从这几天开始学习COM原理。ActiveX是以COM为基础的,所以要想要比较深入的学习ActiveX技术需要先学习COM原理。   COM是微软提出的组件标准。COM是在OLE技术的发展过程中产生的。OLE主要是实现复合文档,而且OLE1也只实现了复合文档...
  • dennisxie1992
  • dennisxie1992
  • 2014-09-08 17:14
  • 579
    个人资料
    • 访问:29159次
    • 积分:1316
    • 等级:
    • 排名:千里之外
    • 原创:86篇
    • 转载:11篇
    • 译文:0篇
    • 评论:11条
    个人说明
    个人很喜欢的一句话, (摘自网络):
    时光荏苒,祝愿不要忘记曾经的初心

    本人现在是一名大二软件工程专业的学生, 每月会坚持更新, 本博客会总结, 整理, 分享个人学习的相关技术知识, 用来记录自己不断进步的历程, 当然内容会以Java为主线.

    虽然是技术博客, 但毕竟是人, 也有自己的情感, 所以, 有时也会分享一些有用的学习资源和一些学习经验和方法, 同时也会写一些其它方面上自己的感受和想法!

    或许我的博客不是写得非常好, 但每一篇文章绝对会用心写! 如果, 你发现有不足或者错误之处, 非常欢迎指出, 当然也欢迎各位小伙伴们来交流技术和学习感受.

    每天进步一点点, 共勉!

    博客专栏
    最新评论