简单地说,我可以将std::vector
作为模板参数传递。以下示例列表用法
tempate<typename container_t, typename value_t>
struct container_types
{
typedef container_t<value_t> value_container_t;
typedef container_t<pair<value_t> pair_container_t;
};
我希望传递container_types以生成最终的两种数据类型。 如果这不可行,那么我怎样才能实现同样的目标。
答案 0 :(得分:1)
是的,就像这样
#include <iostream>
#include <vector>
template <template<typename T> class container_t, typename value_t>
struct container_types
{
typedef container_t<value_t> value_container_t;
typedef container_t<std::pair<value_t,value_t > > pair_container_t;
};
template <typename T>
using my_vector = std::vector<T>;
int main(int argc,char** argv)
{
container_types<my_vector,int>::value_container_t buff(100);
std::cout << buff[50] << std::endl;
}
请注意,我必须用std::vector
包裹my_vector
,因为std::vector
实际上有几个模板参数。