Gidhub BE Developer

[STL] Set 함수

2018-09-24
goodGid

To Do

  • PS 때 많이 사용되는 Set에 사용법에 대해 알아보자.

  • 노드 기반 컨테이너 AVL 트리이다.

  • Key 값의 중복이 허락되지 않는다.

  • 원소는 insert 함수에 의해 삽입이 되며 자동으로 정렬이 된다.

  • 기본 정렬 기준은 오름차순이다.


선언

#include <set>
set<int> se;

삽입 및 특정 값 찾기

set<int> se;
set<int>::iterator iter;
se.insert(10);
se.insert(20);
se.insert(30);

iter = se.find(10);
cout << *iter << endl;

iter = se.find(15);
cout << *iter << endl;

iter = se.find(30);
cout << *iter << endl;

/*
Output
10
32767
30
*/
    
set<char> se2;
set<char>::iterator iter2;
se2.insert('g');
se2.insert('i');
se2.insert('d');

iter2 = se2.find('g');
cout << *iter2 << endl;

iter2 = se2.find('1');
cout << *iter2 << endl;

iter2 = se2.find('d');
cout << *iter2 << endl;

/*
Output
g

d
*/

특정 값 삭제 및 전체 삭제

set<int> se;
se.insert(1);
se.insert(2);
se.insert(3);
se.erase(2); // 특정 값 삭제

set<int>::iterator iter;
for(iter = se.begin(); iter != se.end(); iter++){
    cout << *iter << endl;
}

cout << "=====" << endl;

se.clear(); // 전체 삭제
for(iter = se.begin(); iter != se.end(); iter++){
    cout << *iter << endl;
}

cout << "End Line" << endl;

/*
Output
1
3
=====
End Line 
*/

전체 탐색

set<int> se;
    
se.insert(1);
se.insert(2);

set<int>::iterator iter;
for(iter = se.begin(); iter != se.end(); iter++){
    cout << *iter << endl;
}

/*
Output
1
2
*/

Empty 체크

set<int> se;
se.insert(1);
se.insert(2);
se.insert(3);

cout << se.empty() << endl;
cout << "=====" << endl;

se.clear();
cout << se.empty() << endl;

/*
Output
0
=====
1
*/

Size 체크

set<int> se;
se.insert(1);
se.insert(2);
se.insert(3);

cout << se.size() << endl;

cout << "=====" << endl;
se.clear();

cout << se.size() << endl;

/*
Output
3
=====
0
*/

Index