[C++] set & multiset
2023. 7. 9. 15:09ㆍAlgorithm/with C++
1. set
std::map
과 std::set
은 둘 다 C++의 Standard Template Library (STL)에 속하는 컨테이너입니다.
그러나 각각이 사용되는 목적과 저장하는 데이터의 형태가 다릅니다.
std::map
- :
std::map
은 키-값 쌍을 저장하는 연관 컨테이너입니다.
: 각각의 원소는 키와 값의 쌍으로 구성되며, 이 컨테이너는 키를 기반으로 원소를 탐색하거나 접근합니다.
:std::map
은 연관 배열 또는 사전과 같은 역할을 합니다.
std::set
:std::set
은 단일 값(또는 키)만을 저장하며, 이 값들은 고유합니다.
: 고유한 원소의 집합을 관리하는 데 사용됩니다.
따라서 이 두 컨테이너의 사용 예시:
std::map
은 키를 사용하여 특정 값을 빠르게 찾아야 하는 경우에 유용합니다. 예를 들어, 사람들의 이름을 키로 사용하고, 그들의 전화번호를 값으로 사용하여 전화번호부를 만들 수 있습니다.std::set
은 특정 원소의 유무를 빠르게 확인해야 하는 경우에 유용합니다. 예를 들어, 고유한 ID를 가진 사용자의 집합을 관리하는 경우에 사용될 수 있습니다.
set의 저장된 데이터는 자동적으로 정렬됩니다.
출처 : chatgpt-4.0
#include<iostream>
#include<set>
using namespace std;
int main(){
set<pair<string, int>> st;
st.insert({"test", 1});
st.insert({"test", 1});
st.insert({"test", 1});
cout << st.size() << '\n';
for(auto i : st){
cout << i.first << i.second << '\n';
}
/*
1
test1
*/
#include<set>
: 헤더파일 참조.st.insert({"test", 1});
: 삽입.- 중복되는 요소는 삭제됨.
...
set<int> st2;
st2.insert(1);
st2.insert(1);
st2.insert(2);
cout << st2.size() << '\n';
for(auto i : st2){
cout << i << '\n';
}
/*
2
1
2
*/
...
set<char> st3;
st3.insert('a');
st3.insert('b');
st3.insert('b');
cout << st3.size() << '\n';
for(auto i : st3){
cout << i << '\n';
}
return 0;
}
/*
2
a
b
*/
2. multiset
#include<iostream>
#include<set>
using namespace std;
int main(){
multiset<pair<string, int>> ms;
ms.insert({"test", 1});
ms.insert({"test", 1});
ms.insert({"test", 1});
cout << ms.size() << '\n';
for(auto i : ms){
cout << i.first << i.second << '\n';
}
multiset<int> ms2;
ms2.insert(1);
ms2.insert(1);
ms2.insert(2);
cout << ms2.size() << '\n';
for(auto i : ms2){
cout << i << '\n';
}
multiset<char> ms3;
ms3.insert('a');
ms3.insert('b');
ms3.insert('b');
cout << ms3.size() << '\n';
for(auto i : ms3){
cout << i << '\n';
}
return 0;
}
/*
3
test1
test1
test1
3
1
1
2
3
a
b
b
*/
#include<set>
: set과 동일한 헤더파일을 공유.
정렬은 한다. 단 중복을 허용한다.
'Algorithm > with C++' 카테고리의 다른 글
[C++] struct 구조체 (0) | 2023.07.09 |
---|---|
[C++] stack & queue & deque & priority_queue (0) | 2023.07.09 |
[C++] map & unordered_map (0) | 2023.07.09 |
[C++] 자료구조 시간복잡도 정리 (0) | 2023.07.09 |
[C++] Linked list (0) | 2023.07.09 |