벡터 맵에 비해 멀티 맵의 장점은 무엇입니까?
벡터 맵이나 세트 맵을 만들 수 있다면 멀티 맵이 존재하는 이유를 이해할 수 없습니다. 나에게 유일한 차이점은 다음과 같습니다.
- 사용
equal_range
의 핵심 요소를 얻기 위해 우리는 간단하게 사용하는 벡터 맵과 multimap에서[]
운영자 및 요소의 벡터를 가지고있다. multimap.insert(make_pair(key,value))
요소 추가 및map_of_vectors[key].push_back(value)
벡터 맵 에서 멀티 맵 사용 .
그렇다면 왜 멀티 맵을 사용합니까? 나에게는 키의 모든 값을 얻기 위해 두 개의 반복자보다 벡터를 갖는 것이 좋습니다.
이 질문은 벡터의 무순 맵과 무순 멀티 맵에도 적용됩니다.
동일한 키를 가진 모든 값이 해결하려는 관계가 있는지 여부에 따라 다릅니다.
예를 들어, 키 X가있는 모든 요소를 자주 살펴 보나요? 아니면 함수에 전달하는 식인가요? 그런 다음 직접 처리 할 수있는 별도의 컨테이너에 이미있는 것이 더 편리합니다.
그러나 동일한 키 값을 공유 할 수있는 항목 모음 만있는 경우 그 사이에 벡터를 사용하는 이유는 무엇입니까? 맵, 벡터 케이스에 대해 중첩 된 for 루프를 사용하는 것보다 반복기를 사용하여 멀티 맵을 실행하는 것이 더 편리합니다.
이것을 보는 또 다른 방법 : 키당 여러 항목이 매우 일반적인 경우 맵, 벡터 사례에서 구조가 더 효율적입니다. 드물게 발생하면 그 반대입니다.
multimap<x, y>
와 사이에는 많은 중요한 차이점이 있습니다.map<x, vector<y>>
multimap에 값을 삽입 한 후에는 제거 할 때까지 반복기가 유효하다는 것을 알고 있으며 이것은 매우 강력한 속성이므로 벡터 맵에서는 가질 수 없습니다.
multimap<x,y>::iterator p=mymap.insert(make_pair(a,b));
반복기는 맵에서 지워질 때까지 유효하며 두 번째 경우에는 벡터에 새 항목을 추가 할 때마다 무효화됩니다.
또한 map<x, vector<y>>
기존 키로 설정된 빈 값 이 있을 수 있지만 멀티 맵은 그렇지 않습니다.
이것들은 다르게 행동하는 다른 것들입니다.
솔직히 말해서 라이브러리에서 제공하지 않는 일부 언어의 멀티 맵이 그리워요.
참고 URL : https://stackoverflow.com/questions/4437862/whats-the-advantage-of-multimap-over-map-of-vectors
'code' 카테고리의 다른 글
gcc 및 ld의 위치 독립적 실행 파일에 대한 -fPIE 옵션은 무엇입니까? (0) | 2020.11.18 |
---|---|
Devise를 사용하는 Rails 3 : Facebook 계정을 사용하여 로그인하도록 허용하는 방법은 무엇입니까? (0) | 2020.11.18 |
힘내 푸시가 "비 빨리 감기"를 거부했습니다. (0) | 2020.11.18 |
Linux에서 C # 개발을위한 IDE? (0) | 2020.11.18 |
colgroup에서 텍스트 정렬 센터 사용 (0) | 2020.11.17 |