안녕하세요, 저는 일부 리소스를 사용하여 사용자 정의 할당자를 작성했습니다. std :: vector, list에서 잘 작동합니다. 그러나 std :: unordered_map의 경우 생성자는 두 번 호출됩니다. 나는 왜 그런 것이 아니다. 수있는 누군가가 내게 일어나는 정적 초기화 이해 도와주세요. helper.hC++ 사용자 지정 할당 자
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;
}
그런 식으로이 프로그램에 twiced 호출되는 constrcutor 도우미하게 그것을 호출 다음 코드
파일입니다. 그것은 벡터와 같은 일은 아닙니다. 템플릿 초기화에 관해서 내가 이해하지 못하는 것이 있습니까? 제발 도와주세요
- 1 : "constrcutor"? 어느 것? 실제로 컴파일하는 http://stackoverflow.com/help/mcve를 게시하십시오. 예상되는 출력과 얻은 결과를 모두 포함하십시오 ** ** 정확하게 **. "질문하는 방법"도움말 페이지를 읽었습니까? 그들은 그것을 통해 당신을 걸어야합니다. – Yakk
제안에 감사드립니다. 나는 변화를 만들었다. – user4362837