Traits技法[终于解决]

扮演“特性萃取机”角色,萃取各个迭代器的特性(迭代器的相应类型)模板特例化:提供一份template定义式,而其本身仍为templatization通过classtemplatepartial

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

Traits技法[终于解决]此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“”,获取验证码。在微信里搜索“”或者“”或者微信扫描右侧二维码都可以关注本站微信公众号。

扮演“特性萃取机”角色,萃取各个迭代器的特性(迭代器的相应类型)

模板特例化:提供一份template定义式,而其本身仍为templatization

通过class template partial specialization的作用,不论是原生指针或class-type iterators,都可以让外界方便地取其相应类别

原生指针不是class type,如果不是class type就无法为它定义内嵌型别。但模板特例化解决了该问题

  template<class T>

  class C{…};    // 这个泛化版本允许(接受)T为任何型别

  template<class T>

  class C<T*>{…}; // 这个特化版本仅适用于“T为原生指针”的情况

  

#pragma once

template <class T>
class MyIter
{
public:
	MyIter(T *p = 0):ptr(p){}
	MyIter(MyIter<T> &ths):ptr(ths.ptr){}
	T& operator*(){return *ptr;}

	typedef T value_type;

private:
	T *ptr;	
};


// Partial Specialization 偏特化
template <class T>
struct iterator_traitse
{
	typedef typename T::value_type value_type;
};

template <class T>
struct iterator_traitse<T *>
{
	typedef T value_type;
};

template <class T>
typename iterator_traitse<T *> :: value_type fun(T ite)
{
	return ite;
}

int main()
{
	MyIter<int> ite(new int(8));
	
	// cannot convert from 'MyIter<T>' to 'int'
	int n = fun(ite);

     MyIter<int> p = fun(ite);
return 0; }

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/120234.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 数据结构算法常见面试考题及答案_数据结构和算法面试题

    数据结构算法常见面试考题及答案_数据结构和算法面试题(1)红黑树的了解(平衡树,二叉搜索树),使用场景把数据结构上几种树集中的讨论一下:1.AVLtree定义:最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O(logn)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。节点的平衡因子是它的左子树的高度减去它的右子树的高度(有时相反)。…

  • linux find命令的使用_linux打包命令tar

    linux find命令的使用_linux打包命令tarLinux中find命令是系统中查找文件的命令,可以帮助用户快速找出自己所需要的文件。通过文件名查找find-name文件名find/etc/-namepasswd###查找/etc目录下的passwd通过文件嵌套层数查找find-maxdepth层数###查找文件时最大层数find-mindepth层数###查找文件时最小层数12例;我们查找/etc中所有.conf文件,可以看…

  • teamviwer-无限绑定

    teamviwer-无限绑定

  • matlab squeeze函数的用法「建议收藏」

    matlab squeeze函数的用法「建议收藏」matlab中squeeze函数用于删除矩阵中的单一维(Removesingletondimensions),比如执行下面的代码,随机产生一个1x2x3的矩阵A,然后squeeze(A)将返回一个

  • idea激活码2021破解方法[通俗易懂]

    idea激活码2021破解方法,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • 设计测试用例的方法

    设计测试用例的方法如果测试的时间有限,如何保证在有限的时间内让产品上线?(1)有限的时间内测试,保证用户经常使用(使用频率比较高,主要的,核心的功能)功能的质量(2)如果有限的时间所有的功能不能完全测完,可以和产品经理开发商量,把没有通过测试的,有风险的功能把用户的入口,屏蔽掉(让用户无法使用),产生错误风险就会降低(3)本次测试,测试报告写清楚,这次上线,哪些功能测试了,哪些功能没有测试,上线风险分析清楚。百度云盘的测试用例太多了,如何去写?(1)用户经常使用的功能有哪些?文件的存储(长传,接受)下载分享

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号