使用unordered_map allocator不是默认构造函数

时间:2015-03-04 09:46:51

标签: c++ templates c++11 unordered-map tr1

我想使用与allocator中的默认unordered_map不同的allocator 对于我的特定int,我想调用另一个构造函数而不是默认构造函数(我想将unordered_map传递给构造函数)。
我认为问题在于default constructor调用allocator的{​​{1}}。

所以,最终我想做那样的事情:

而不是调用此unordered_map构造函数:

std::tr1::unordered_map<int, int, std::tr1::hash<int>, std::equal_to<int>, MyAllocatorNs::MyAllocator<std::pair<const int, int> > > unorderedMap;

我想做那样的事情:

std::tr1::unordered_map<int, int, std::tr1::hash<int>, std::equal_to<int>, MyAllocatorNs::MyAllocator<std::pair<const int, int> >(3) > unorderedMap;

无论如何都可能吗?

1 个答案:

答案 0 :(得分:2)

unordered_map允许您将分配器的实例作为参数传递,而不是默认为零参数构造函数。

typedef MyAllocatorNs::MyAllocator<std::pair<const int, int> > AllocatorType;
unordered_map<int, int, hash<int>, equal_to<int>, AllocatorType > unorderedMap (AllocatorType(3));