C/C++培训
美国上市C/C++培训机构

400-111-8989

热门课程

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++开发5款辅助工具

C++关键字说明及比较

适合C/C++新手练手的项目

选择城市和中心
贵州省

广西省

海南省