模板模板参数
- 模板模板参数(Template Template Parameters):就是让模板参数本身成为模板。
- a)类型模板参数 b) 非类型模板参数 c) 模板模板参数。
#include <iostream>
#include <list>
#include <vector>
#include <string>
using namespace std;
namespace _nmsp1
{
template<typename T,
template <typename W> typename Container=std::vector
>
class MyClass
{
public:
Container<T> myc;
MyClass()
{
for (int i = 0; i < 10; i++)
{
myc.push_back(i);
cout << "call MyClass()" << endl;
}
}
void func();
};
template<
template<typename W,W* pointer> typename Container
>
class MyClass2
{
public:
};
template<typename T,
template <typename W> typename = std::vector
>
class MyClass3
{
public:
};
template<typename T,
template <typename W> typename Container
>
void MyClass<T, Container>::func()
{
cout << "void MyClass<T, Container>::func()" << endl;
}
}
int main(int argc, char* argv[])
{
_nmsp1::MyClass<double, list> mylist;
return 0;
}
共用体模板(联合模板)
- 可以把联合理解成一种类类型(不要理解成类)。联合体也支持模板化。
#include <iostream>
#include <list>
#include <vector>
#include <string>
using namespace std;
namespace _nmsp2
{
template <typename T,typename U>
union MyUnion
{
T carnum;
U cartype;
U carname[60];
};
}
int main(int argc, char* argv[])
{
_nmsp2::MyUnion<int, char> myu;
myu.carnum = 156;
cout << myu.carnum << endl;
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构