code

벡터 맵에 비해 멀티 맵의 장점은 무엇입니까?

codestyles 2020. 11. 18. 09:06
반응형

벡터 맵에 비해 멀티 맵의 장점은 무엇입니까?


벡터 맵이나 세트 맵을 만들 수 있다면 멀티 맵이 존재하는 이유를 이해할 수 없습니다. 나에게 유일한 차이점은 다음과 같습니다.

  • 사용 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

반응형