更多课程 选择中心

C/C++培训
达内IT学院

400-996-5531

C++开发-迭代器相应型别

  • 发布:C++培训
  • 来源:网络
  • 时间:2018-05-10 17:58

引子:在算法运用迭代器的时候,很可能用到起相应型别(即迭代器所指之物的型别),但C++支持sizeof ,并无typeof。

可以利用function template的参数推导机制。

1.函数参数的情况


#include<iostream>

using namespace std;

template <class I,class T>

void func_impl(I iter,T t){

T tmp;//这里解决了问题,T就是迭代器所指之物的类型  //…………

}

template <class I>

void func(I iter){

func_impl(iter,*iter);

}

int main()

{

int i;

func(&i);

}


显然上述的方法无法判断函数返回值类型的情况

2.函数返回值的情况


#include<iostream>

using namespace std;

template <class T>

class MyIter{

public:

typedef T value_type;

T* ptr;

MyIter(T* p=0):ptr(p){}

T& operator*()const{

return *ptr;

}

};

template <class I>

typename I::value_type//I::value_type编译器不知道代表一个型别或是一个成员函数或是一个数据成员,关键词typename用以告诉编译器这是一个型别

func(I ite){

return *ite;

}

int main(){

MyIter<int> ite(new int(8));

cout<<func(ite);

}


免责声明:内容和图片源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:C++c开发-按字节对齐分析
下一篇:适合C/C++新手练手的项目

超全的C语言标识符知识

C指针——指针类型转换

C指针——指针和结构类型的关系

C指针——数组和指针的关系

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省