개발/C, C++

[C++] STL 컨테이너 Set과 Map 활용법과 차이점

growing-dev 2023. 9. 2. 22:49

컨테이너 중에서 많이 사용되는 Vector에 대해 알아보았고 그 다음으로 C++에서 많이 사용되는 Set와 Map 컨테이너에 대해서 알아보고 활용법과 차이점에 대해서 정리해 보도록 하겠습니다.
 
 

C++의 Set과 Map 활용법과 차이점

 

set와 map

 
 

Set: 중복 없이 유일한 값 관리

 
Set은 중복된 값을 허용하지 않는 데이터 구조입니다. 이를 통해 유일한 값을 저장하고 관리할 수 있습니다. 값을 정렬된 순서로 저장하며, 내부적으로는 레드-블랙 트리(Red-Black Tree) 또는 비슷한 자료 구조를 사용하여 빠른 검색 및 삽입을 제공합니다. 이러한 특징 때문에 집합 연산에 유용하게 사용할 수 있습니다.

#include <set>
std::set<int> mySet;
mySet.insert(10);
mySet.insert(20);
mySet.insert(10); // 중복된 값은 무시됨


 

Map: 키-값 쌍으로 데이터 관리

 
map은 키(key)와 값(value)을 연결하는 데이터 구조로, 각 키는 유일해야 합니다. 이를 통해 키를 사용하여 연관된 값을 검색할 수 있습니다. 값은 정렬된 순서로 저장되며, 내부적으로는 레드-블랙 트리 또는 비슷한 자료 구조를 사용하여 빠른 검색 및 삽입을 제공합니다. 주로 키-값 관계를 표현하고 검색할 때 사용됩니다.

#include <map>
std::map<std::string, int> myMap;
myMap["Alice"] = 25;
myMap["Bob"] = 30;
myMap["Alice"] = 26; // Alice의 나이를 업데이트


위의 코드에서는 `myMap`이라는 `std::map` 객체를 생성하고, 문자열 키와 정수 값을 연결하고 있습니다. "Alice" 키에 대한 값은 중복되지 않기 때문에 업데이트가 가능합니다.
 
 

Set과 Map의 차이점

 

1. 내용:
   - `set`은 값만을 저장합니다.
   - `map`은 키-값 쌍을 저장합니다.

2. 중복:
   - `set`은 중복된 값을 허용하지 않습니다.
   - `map`은 키는 중복되지 않아야 하지만, 값은 중복될 수 있습니다.

3. 사용 사례:
   - `set`은 고유한 값을 유지하거나 정렬된 데이터 집합을 필요로 할 때 사용됩니다.
   - `map`은 키-값 관계를 표현하고 검색할 때 사용됩니다.


 
 

 결론

 
Set과 Map은 각각의 고유한 특징을 가지고 있으므로, 프로그램 요구 사항에 따라 적절한 컨테이너를 선택해야 합니다. 두 컨테이너는 데이터 구조를 효율적으로 관리하는데 큰 도움을 주는 강력한 도구입니다.

반응형