Следуя моему предыдущему вопросу, Defining a class member according to the class template, я понял, что количество ячеек по умолчанию для unordered_map
слишком мало для моих целей.Использование typedef с параметром конструктора
У меня есть шаблон класса Base
, который будет использовать карту или неупорядоченные карты, в зависимости от параметров шаблона:
template<class A, class B>
class Base {
template<class T1, class T2>
struct MapType { typedef boost:unordered_map<...> MType; };
template<class T2>
struct MapType<std::string, T2> { typedef std::map<...> MType; };
typedef typename MapType<...>::MType Map;
Map mMap;
};
Я хотел бы изменить размер по умолчанию Map
в случае, если это последний тип используя его consturctor (первый параметр определяет размер) или с помощью неупорядоченной карты rehash
.
Моей единственная идея до сих пор использовать конструктор класса Base
проверить (dynamic_cast
?) Мой mMap
является ли карта или неупорядоченная карта с последующим использованием функции rehash
.
Единственное ограничение заключается в том, что этот код используется в сотнях мест, которые не должны меняться (не могут полиморфировать мой базовый класс).
Спасибо! Именно то, на что я надеялся! –