std :: multimap의 차이점은 무엇입니까 및 std :: map >
나는 그들이 하나의 키와 고유 한 여러 값을 가지고 있음을 발견했습니다.
멀티 맵은 키와 값이 여러 번 나타날 수있는 (키, 값) 쌍을 저장합니다.
는 map<key, set<value>>
단지 특정 키에 대한 한 번 각 값을 저장합니다. 그렇게하려면 키뿐만 아니라 값을 비교할 수 있어야합니다.
동일하게 비교되는 값이 동일하거나 어쨌든 별도로 저장하려는 경우 응용 프로그램에 따라 다릅니다. 아마도 그들은 다르지만 집합에 대한 비교에 참여하지 않는 필드를 포함 할 수 있습니다.
A std::map
는 유형 값과 연결된 고유 키를 가질 수있는 연관 컨테이너입니다. 예를 들면
void someFunction()
{
typedef std::map<std::string, int> MapType;
MapType myMap;
// insertion
myMap.insert(MapType::value_type("test", 42));
myMap.insert(MapType::value_type("other-test", 0));
// search
auto it = myMap.find("test");
if (it != myMap.end())
std::cout << "value for " << it->first << " is " << it->second << std::endl;
else
std::cout << "value not found" << std::endl;
}
A std::multimap
는 a std::map
와 같지만 키가 더 이상 고유하지 않습니다. 따라서 하나의 고유 한 항목을 찾는 대신 다양한 항목을 찾을 수 있습니다. 예를 들면
void someFunction()
{
typedef std::multimap<std::string, int> MapType;
MapType myMap;
// insertion
myMap.insert(MapType::value_type("test", 42));
myMap.insert(MapType::value_type("test", 45));
myMap.insert(MapType::value_type("other-test", 0));
// search
std::pair<auto first, auto second> range = myMap.equal_range("test");
for (auto it = range.first; it != range.second; ++it)
std::cout << "value for " << it->first << " can be " << it->second << std::endl;
}
은와 std::set
비슷 std::map
하지만 값과 관련된 키를 저장하지 않습니다. 키 유형 만 저장하고 세트 내에서 고유함을 보장합니다.
std::multiset
동일한 패턴을 따르는, 도 있습니다 .
이러한 모든 컨테이너는 find / equal_range와 함께 O (log (n)) 액세스를 제공합니다.
map::insert
map
컨테이너는 중복 키 값을 허용하지 않기 때문에 삽입 작업은 삽입 된 각 요소에 대해 동일한 키 값을 가진 컨테이너에 이미 다른 요소가 있는지 확인합니다.이 경우 요소가 삽입되지 않고 매핑 된 값이 변경되지 않습니다.
반면에
multimap::insert
동일한 키로 여러 항목을 삽입 할 수 있습니다.
http://www.cplusplus.com/reference/stl/map/
http://www.cplusplus.com/reference/stl/multimap/
후자는 값을 정렬 할 수 있어야 operator<
하고 (비교 함수 를 통해 ) 전자는 그렇지 않습니다.
'Nice programing' 카테고리의 다른 글
자바 스크립트에서 배열의 중복 값을 계산하는 방법 (0) | 2020.10.17 |
---|---|
목록에 하나의 진실한 값만 있는지 어떻게 확인할 수 있습니까? (0) | 2020.10.17 |
Linux에서 파일을 사용하는 프로세스를 어떻게 알 수 있습니까? (0) | 2020.10.16 |
Angular2- 'router-outlet'은 알려진 요소가 아닙니다. (0) | 2020.10.16 |
asp.net MVC 부분보기 컨트롤러 작업 (0) | 2020.10.16 |