컨테이너 중에서 많이 사용되는 Vector에 대해 알아보았고 그 다음으로 C++에서 많이 사용되는 Set와 Map 컨테이너에 대해서 알아보고 활용법과 차이점에 대해서 정리해 보도록 하겠습니다.
C++의 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은 각각의 고유한 특징을 가지고 있으므로, 프로그램 요구 사항에 따라 적절한 컨테이너를 선택해야 합니다. 두 컨테이너는 데이터 구조를 효율적으로 관리하는데 큰 도움을 주는 강력한 도구입니다.
'개발 > C, C++' 카테고리의 다른 글
[C++] STL 컨테이너 unordered set, unordered map 사용법, 차이점 (0) | 2023.11.21 |
---|---|
[C++] class 생성자에서 explicit 키워드의 의미 (0) | 2023.09.05 |
[C++] STL 컨테이너 Vector 의 용도와 특징, 사용 예제 (0) | 2023.09.01 |
[C++] 생성자에서 virtual 가상 함수 호출하는 경우의 문제 (0) | 2023.08.11 |
[C++] 복사 생성자(Copy Constructor) 의 이해 및 활용 (1) | 2023.07.27 |