2015-03-04 6 views
1

Я хотел бы использовать другой allocator, чем по умолчанию, в unordered_map.
Для моего конкретного allocator, я хочу вызвать другой конструктор, чем стандартный (я хочу передать int конструктору).
Я думаю, проблема в том, что unordered_map вызывает default constructor моего allocator.Использование unordered_map не по умолчанию конструктор распределителя

Так, в конце концов, я хочу сделать что-то вроде этого:

Вместо вызова этого 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

[Будет пропускание экземпляра в распределителе карты конструктора работы для вас?] (Http://en.cppreference.com/w/cpp/container/unordered_map/unordered_map) – milleniumbug

ответ

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));