Привет, Я написал собственный распределитель с помощью некоторых ресурсов. Он отлично работает для std :: vector, list. Однако для std :: unordered_map конструктор вызывается дважды. Я не почему. Может кто-то, пожалуйста, помогите мне понять статическую инициализацию, которая происходит. Вот кодC++ custom allocator
Файл: helper.h
template<typename T>
class helper
{
static const size_t init_size = 12; // 0xF4240 max number of entries in the data structure
public:
helper() :
alloc_size(
sizeof(link) > sizeof(T) ?
init_size * sizeof(link) : init_size * sizeof(T)), offset(
sizeof(link) > sizeof(T) ? sizeof(link) : sizeof(T))
{
std::cout <<"Initial allocation done" << " I value : " << i << std::endl;
}
};
файла: main.cpp
int main()
{
std::unordered_map<long,long,hash<long>, equal_to<long> , myallocator<pair<const long,long> > > my_map;
}
назвав его таким образом делает помощник constrcutor дозвонились twiced в программе. Это не так для вектора. Есть ли что-то, что я не понимаю в отношении инициализации шаблона. Пожалуйста, помогите
- 1: "constrcutor"? Который из? Отправьте http://stackoverflow.com/help/mcve - тот, который действительно компилируется. Пожалуйста, укажите как то, что вы ожидаете, так и то, что вы получили **, точно **. Вы читали страницы справки «как задать вопрос»? Они должны пройти через это. – Yakk
спасибо за предложение. я внес изменения. – user4362837