This question already has answers here:
What are some uses of template template parameters?
                                
                                    (10个回答)
                                
                        
                                5年前关闭。
            
                    
简单来说,我可以将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生成最后两个数据类型。
如果这不可行,那我该如何实现。

最佳答案

是的,像这样

#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实际上有几个模板参数。

关于c++ - 部分类型作为模板参数c++ ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22387356/

10-11 23:15