使用 unordered_map 分配器的非默认构造函数
Using unordered_map allocator's not default constructor
我想使用不同于 unordered_map
中默认值的 allocator
。
对于我的特定 allocator
,我想调用另一个构造函数而不是默认构造函数(我想将 int
传递给构造函数)。
我认为问题是 unordered_map
调用了我的 allocator
.
的 default constructor
所以,最终我想做这样的事情:
而不是调用此 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;
有可能吗?
unordered_map
允许您将分配器实例作为参数传递,而不是默认为零参数构造函数。
typedef MyAllocatorNs::MyAllocator<std::pair<const int, int> > AllocatorType;
unordered_map<int, int, hash<int>, equal_to<int>, AllocatorType > unorderedMap (AllocatorType(3));
我想使用不同于 unordered_map
中默认值的 allocator
。
对于我的特定 allocator
,我想调用另一个构造函数而不是默认构造函数(我想将 int
传递给构造函数)。
我认为问题是 unordered_map
调用了我的 allocator
.
default constructor
所以,最终我想做这样的事情:
而不是调用此 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;
有可能吗?
unordered_map
允许您将分配器实例作为参数传递,而不是默认为零参数构造函数。
typedef MyAllocatorNs::MyAllocator<std::pair<const int, int> > AllocatorType;
unordered_map<int, int, hash<int>, equal_to<int>, AllocatorType > unorderedMap (AllocatorType(3));