C++模板的使用,急!!!
答案:3 悬赏:40
解决时间 2021-02-20 14:30
- 提问者网友:回憶丶初
- 2021-02-20 09:54
我想这样定义一个泛化的容器,容器里所存储的对象也是泛化的~我该怎样定义?template应该不行吧?T代表容器类型,如vector,list这些,E代表所存储对象类型,如int string这些,应该如何定义?
最佳答案
- 二级知识专家网友:滚出爷的世界
- 2021-02-20 10:21
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
<
template
<
class Type,
class Allocator=allocator
>
class TContainer,
class TElem
>
class MyContainer : public TContainer
{
};
实例化时就可以:
MyContainer
myContainer.push_back( 1 );
也可以用list,只要传入的容器模板定义和TContainer一致就可以编译通过。所以,map就不行了。
全部回答
- 1楼网友:浪女动了心
- 2021-02-20 11:26
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; }
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯