※ 개인적인 공부를 위해 포스팅 하는 글입니다.
map
set
multimap
multiset
# set
set<int> s; // (key = Value)
// 나머지 특징들은 map과 동일하다. 키가 곧 값. 따라서 중복된건 빼고 정렬을해준다.
/*
넣고 빼고 찾고 순회하고
*/
s.insert(10);
s.insert(20);
s.insert(80);
s.insert(90);
s.insert(50);
s.insert(40);
s.insert(60);
s.insert(70);
//빼고
s.erase(40);
//찾고
set<int>::iterator findIt = s.find(50);
if (findIt == s.end())
{
cout << "못 찾음" << endl;
}
else
{
cout << "찾음" << endl;
}
for (set<int>::iterator it = s.begin(); it != s.end(); ++it)
{
cout << *it << endl;
}
//인덱스 접근 안댐.
ㆍ key 가 곧 value (key = value)
ㆍ나머지 특징들은 다 map과 동일하다. 넣고 빼고 찾고 순회하고
※ multi 시리즈는 동일한 특성이지만 중복을 허용한다.
#multimap
multimap<int, int>mm;
mm.insert(make_pair(1, 100));
mm.insert(make_pair(1, 200));
mm.insert(make_pair(1, 300));
mm.insert(make_pair(2, 400));
mm.insert(make_pair(2, 500));
/ mm[1] = 500; 이건 안된다. insert로만 접근 가능
//빼고
/ mm.erase(1);
//이렇게 빼면 키1에 대한건 다 날아간다.
unsigned int cnt = mm.erase(1); // 지운만큼 카운트도 반환해줌
//찾고
multimap<int,int>::iterator itFind = mm.find(1);
if (itFind != mm.end())
{
mm.erase(itFind);
}
ㆍ 지우면 중복 키는 다 날아간다. 그리고 지운만큼 unsigned int를 반환해준다.
pair<multimap<int, int>::iterator, multimap<int, int>::iterator> itPair;
mm.equal_range(1);
//따로따로 하고싶다면 이렇게.
mm.lower_bound(1); //시작
mm.upper_bound(1); //끝
for (multimap<int, int>::iterator it = itPair.first; it != itPair.second; ++it)
{
cout << it->first << " " << it->second << endl;
}
ㆍ equal_range는 1이 시작되는 키값을 first로 1이 끝나는위치를 secend로 반환해준다
ㆍ 따로 하고싶다면 lower과 upper을 이용하자
#multiset
ㆍ key가 곧 value였다. 중복된 데이터를 허용하는 set이다.
얘도 위의 lower과 upper 키워드가 있고 equal_range도 그대로 있다!
'C++프로그래밍 > 자료구조,알고리즘(추후확장)' 카테고리의 다른 글
자주 쓰이는 알고리즘 (0) | 2024.10.01 |
---|---|
map (3) | 2024.09.30 |
deque (0) | 2024.09.30 |
list 구현해보기 (1) | 2024.09.29 |
list와 list의 이터레이터 (0) | 2024.09.29 |