C++ 11을 사용하여지도의지도를 초기화하려고합니다. 내 컴파일러는 VS 2013 Express입니다.VS에서 초기화 목록이있는지도의지도 초기화
unordered_map<EnumType, unordered_map<string, string>> substitutions = {
{
Record::BasementType,
{
{ "0", "" },
{ "1", "Slab or pier" },
{ "2", "Crawl" }
}
},
{
Record::BuildingStyle,
{
{ "0", "" },
{ "1", "Ranch" },
{ "2", "Raised ranch" }
}
},
// ... and so on
};
컴파일 중이지만 ntdll.dll 내부에 중단 점이 있습니다. 이 코드의 단순화 된 버전은
unordered_map<EnumType, unordered_map<string, string>> substitutions = {
{
Record::BasementType,
{
{ "0", "" },
{ "1", "Slab or pier" },
{ "2", "Crawl" }
}
},
// *nothing more*
};
입니다.
왜지도에 두 개 이상의 쌍이있을 때 이것이 작동하지 않습니까? 그것을 더 잘하는 방법?
"ntdll.dll에서 중단 점을 얻고 있습니다."너무 막연합니다. 단언이 있습니까? 그렇다면 그 주장은 무엇을 말하고 있는가? – thelamb
하지만 그렇게 보입니다. 초기화 목록의 끝을 가리키는 중단 점을 얻고 있으며 그 뒤에는 분해 만 있습니다. 디버그 모드에서는 동일하지만 std :: pair, std :: map, (disassembly), std :: _ Tree를 통해 stacktrace를 얻고 있습니다. 파일 xtree 줄 327에서 끝납니다 : _DEBUG_ERROR ("map/set iterators 호환 불능 "); – omikron
좋아, 그럼 지금은 더 이상 도울 수 없어. 나중에 시간이 있다면. 할 수있는 일은 온라인 컴파일러를 사용하여 코드가 실행되는지 확인하는 것입니다 (예 : G ++ 또는 Clang ++ 사용). 그렇다면 VS2013 버그 일 수 있습니다. 단지 코드를 보면서 나는 무엇이 잘못되었는지 보지 못합니다. – thelamb