내 사용자 정의 구조 내에 std::unordered_map<char, Node*>
이 있습니다. 빈으로으로 초기화하고 싶습니다. 내가 뭐 잘못 했어요? 두 종류의 초기화를 시도했습니다. 둘 다 동일한 결과를 제공합니다.C++에서 내 구조 내에서 비어있는 unordered_map을 초기화하십시오.
다음 문 :
newStructure->map = unordered_map<char, Node*>();
때로는 성공 결과,이 맵의 크기는 그것이 있어야 0이다. 대부분의 경우,이 초기화 중에 실패하고 다음 오류가 map
없이 초기화 생성 될 것이다 :
의 malloc : 포인터가
할당되지 않은 해제되고이 저를 줄 것이다 극단적 인 거대한 크기의 초기 std::unordered_map
. 지도의 크기는 88029716824088
일 수 있습니다.
빈 std::unordered_map
구조체를 올바르게 초기화하려면 어떻게해야합니까? 내 initializer
는 다음과 같이 정의된다,
struct Node {
char letter;
unordered_map<char, Node*> next;
bool hasEnd;
static Node* init(char);
}
을 그리고 :
내 구조는 다음과 같이 정의된다
Node* Node::init(char letter) {
Node *newNode = (Node*) malloc(sizeof(Node));
newNode->letter = letter;
newNode->hasEnd = false;
return newNode;
};
때로는 next
의 크기가 매우 큰 숫자가 될 것입니다.
지도를 정의하면 이미 비어 있습니다. – user1438832
@ user1438832지도의 크기가 매우 커질 수 있습니다. 어떻게 그럴 수 있니? – Judgelight
당신은'malloc'을 사용하여 C++ 객체를 할당하지 않았습니까? [어떤 경우 malloc vs new를 사용해야합니까?] (https://stackoverflow.com/questions/184537/in-what-cases-do-i-use-malloc-vs-new) –