【发布时间】:2018-01-30 08:53:56
【问题描述】:
我想创建一个可以容纳容器和容器的任意组合的模板类。例如,std::vector<std::string> 或 std::map<std::tree>。
我尝试了很多组合,但我必须承认模板的复杂性让我不知所措。我编译的关闭是这样的:
template <class Vector, template <typename, class Containee = std::string> class Container>
class GenericContainer
{
Container<Containee> mLemario;
};
虽然到目前为止它已编译,但是当我想实例化它时,我收到很多错误。
MyContainer<std::vector, std::string> myContainer;
我是否使用正确的方法来创建这种类?
【问题讨论】:
-
没有
std::map<std::tree>这样的东西,因为(1)没有std::tree和(2)std::map需要(至少)两个参数:key和value:std::map<key,value>。那么你认为std::map的容器是什么?它的key,或者它的value,或者std::pair<key,value>(这实际上是std::map::value_type给你的)? -
它将支持什么功能?你打算怎么用?问是因为不同的容器提供了非常不同的功能和不同的复杂性。它们不能互换。总的来说,我认为这是一个坏主意。