[C++] Set Container

Yewon Choi·2020년 6월 22일
0

C++

목록 보기
9/9

📌 Set Container 란?

  • 노드 기반 컨테이너
  • 균형 이진트리로 구현되어 있다.
  • Key라 불리는 원소들의 집합 (원소 == key)
  • key값은 중복이 허용되지 않는다.
  • insert 멤버 함수에 의해 삽입되면, 원소는 자동* 으로 정렬된다.
  • default 정렬기준은 less (오름차순) 이다.
  • 중위순회를 통해 순서대로 출력 가능하다(iterator는 자동으로 중위순회 순서대로 출력해준다.)


📌 set 사용방법

set<int> s;
set<pair<int, string> > s;


📌 set 사용예시


#include <iostream>
#include <set>
#include <string>

using namespace std;

int main() {
	
	set<int> s;
	s.insert(40);
	s.insert(77);

	for (int i = 0; i < 10; i++)
		s.insert(i);

	// 값 존재여부 찾기 - set<int>
	set<int>::iterator iter;
	iter = s.find(4);
	if (iter != s.end())
		cout << *iter << ": 존재" << endl; // 4: 존재
	else
		cout << "존재 안함" << endl;



	// set
	set<string> s1;


	// insert(element)
	s1.insert("abc");
	s1.insert("def");
	s1.insert("ghi");
	s1.insert("jkl");


	// erase(element)
	s1.erase("jkl");


	// empty(), size()
	if (!s.empty()) cout << "s size : " << s.size() << '\n';


	// find(element)
	cout << *s1.find("abc") << '\n'; 
	cout << *s1.find("def") << '\n';
	cout << *s1.find("qwer") << '\n';  //없는 값 find로 출력하려하면 error


	// 값 존재여부 찾기 - set<string>
	set<string>::iterator siter;
	siter = s1.find("sdfadsfaf");  // 존재 안함
	if (siter != s1.end())
		cout << *siter << ": 존재" << endl;
	else
		cout << "존재 안함" << endl;

	// count(element)
	cout << "abc count : " << s1.count("abc") << '\n';


	// begin(), end()
	cout << "traverse" << '\n';
	for (auto it = s1.begin(); it != s1.end(); it++) {
		cout << "value : " << *it << '\n';
	}

	return 0;
} 
  


#include <iostream>
#include <set>
using namespace std;
int main() {
	set<int> s;
	int n, m;
	cin >> n;
	while (n--) {
		int temp;
		cin >> temp;
		s.insert(temp);
	}
	cin >> m;
	while (m--) {
		int temp;
		cin >> temp;
		cout << s.count(temp) << endl;
	}	
	return 0;
}
  • set은 key값 중복 저장 안된다.

  • count는 해당 원소의 개수를 반환한다. set은 중복을 허용하지 않으므로 1 또는 0이다







출처 https://blockdmask.tistory.com/

profile
https://github.com/devAon 찰나의 개발흔적을 남기는 개발블로그 입니다 🐥 https://aonee.tistory.com 에서 Velog로 블로그 이전 작업중입니다 ! 🎶

0개의 댓글