Java 프로그램을 C++로 변환하려고합니다. 그래서, 자바 코드에서 사용되는 Linkedhashmap
데이터 구조가 있고 그것을 C++로 변환하려고합니다. C++에서 LinkedHashmap
에 해당하는 데이터 유형이 있습니까?해당 링크 된 Hashmap C++에서?
std::unordered_map
을 사용해 보았지만 삽입 순서가 유지되지 않습니다.
Java 프로그램을 C++로 변환하려고합니다. 그래서, 자바 코드에서 사용되는 Linkedhashmap
데이터 구조가 있고 그것을 C++로 변환하려고합니다. C++에서 LinkedHashmap
에 해당하는 데이터 유형이 있습니까?해당 링크 된 Hashmap C++에서?
std::unordered_map
을 사용해 보았지만 삽입 순서가 유지되지 않습니다.
C++은 Java의 LinkedHashMap<K,V>
을 모방하는 동작을 가진 컬렉션 템플릿을 제공하지 않으므로 매핑과 별도로 주문을 유지해야합니다.
이것은 std::list<std::pair<K,V>>
의 데이터를 유지하고 키를 사용하여 항목의 빠른 룩업에 대해 별도의 std::unordered_map<k,std::list::iterator<std::pair<K,V>>>
맵을 유지함으로써 달성 될 수있다 :
std::prev(list.end())
에 매핑합니다.std::list<std::pair<K,V>>
을 반복하십시오.감사합니다. 이것이 내가해야 할 일이라고 생각합니다. 더 복잡해질지라도 최소한 주문을 유지해야합니다. 다시 한 번 감사드립니다 – emadalamoudi
이것이 받아 들여지는 대답이기 때문에 LinkedHashMap보다 나쁜 것을 지적해야합니다. 1) 키로 조회 할 때 추가 간접 참조 2) 이레 이저 반복자에 Hash-Lookup이 필요합니다. 항목에 두 개의 링크 된 목록 (삽입 순서 및 해시 버킷)에 대한 포인터가 포함 된 통합 솔루션에는 이러한 단점도 없습니다. 그게 그렇게 중요한 건가? 말하기 어렵다/의존한다. 제안 된 솔루션은 이러한 LinkedHashMap보다 엄격하게 열등합니까? 예. – misberner
아니요, 갖고 계시지 않습니다. 처음부터 못생긴 데이터 구조입니다. 누구도 표준화를 제안하지 않았습니다. –
@DavidHaim hmmm. 그렇다면 어떻게 예측 가능한 반복 명령으로 해시 맵을 만들 수 있습니까? – emadalamoudi
해시 맵의 삽입 순서가 왜 중요한지 직접 물어야합니다. –