中易网

C++模板的使用,急!!!

答案:3  悬赏:40  
解决时间 2021-02-20 14:30
我想这样定义一个泛化的容器,容器里所存储的对象也是泛化的~我该怎样定义?template应该不行吧?T代表容器类型,如vector,list这些,E代表所存储对象类型,如int string这些,应该如何定义?
最佳答案
lz需要的是:模板的模板参数,就是模板参数本身含是一个模板。

比如:
template
<
template
<
class Type,
class Allocator=allocator
>
class TContainer,
class TElem
>
class MyContainer : public TContainer
{

};

实例化时就可以:
MyContainer myContainer;
myContainer.push_back( 1 );

也可以用list,只要传入的容器模板定义和TContainer一致就可以编译通过。所以,map就不行了。
全部回答
template(声明模板的开始)这样子的 当然,还有其他的模板声明,如vector等都是把class代替吧了。 至于template就是让你多了一种类型使用而已 比如在模板中可能要用到两种数据类型的数据,如果你只定义一种,那另一种 就不能使用了。 比如上面的T如果作为了long存在,就不能再作为int型存在了 如#include templatevoid Add(T x,T y){ cout< templatevoid Add(T x,K y){ cout<
  • 2楼网友:温柔刺客
  • 2021-02-20 10:59

下面仅仅是一个示例

#include <iostream.h>

typedef int t;//建议你使用这个,这个比template省事,要使用template<class t>,就必须放在每个函数定义头之前开,不然会报错。 void main() { t a,b,c; cout<<"please input two number:"<<endl; cin>>a>>b; c=a+b; cout<<c<<endl; }

我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯