이것저것 공부한 기록

C++) Set, Map 정리 본문

Study/프로그래밍 개념정리

C++) Set, Map 정리

블랜디 2019. 10. 26. 17:15

1. Set

-  그냥 큰 상자 안에 모든 원소들을 쑤셔 넣은 것이라고 보면 됨.

- 원소가 '있나/없나'를 판별할 때 쓰기 좋음

 

#include <set>
using namespace std ;

Library : set

Namespace : std

 

//선언
set<int> s ;

//insert
s.insert(10) ;
s.insert(20) ;
s.insert(50) ;
s.insert(40) ;
s.insert(40) ;

Set 안에는 중복된 원소들이 없다.

또한, iterator를 사용하여 순서대로 출력을 수행할 경우, 크기대로 정렬되어 출력된다.

for (auto itr = s.begin(); itr != s.end(); ++itr)
		cout << *itr << " ";

-> 위 insert의 결과를 출력하면

10 20 40 50

이 나온다

 

if( s.end() != s.find(x) )

값이 있는지 없는지는 멤버함수 find(s)로 확인할 수 있는데,

위 코드는 s Set에 x가 없을 경우, iterator end() 리턴.

 

 

2. Map

 

Set과 거의 똑같은데 다른점은, key와 그 key에 대응되는 value까지 같이 보관한다.

#include <map>
using namespace std;

Library : map

Namespace : std 

 

map<string, int> num_list ;
//생성

num_list.insert(pair<string, int>("일", 1));
num_list.insert(make_pair("이", 2));
num_list.insert["삼"] = 3;
//insert

num_list["영"]; 
// 도 생성이 된다!! 값은 0으로 초기화 된다.

insert에 3가지 방법이 있는데, 3번째를 많이 쓰는 듯.

 

그러나 주의할 점은 위 코드처럼 단순히 참조하는 것만으로도 생성이 된다는 것이다.

 

cout<<"사 가 가리키는 숫자 : "<< num_list["사"] << endl;

때문에 위의 코드를 실행할 경우

사 가 가리키는 숫자 : 0 이라는 결과가 나온다.

 

때문에 find함수로 존재하는지 먼저 확인후에 값을 참조하는 것이 권장.

 

if( num_list.end() != num_list.find("삼십") )

find 사용법은 set과 같다.

 

* insert를 같은 key에 대해 연속으로 쓸 경우,

첫번째 insert 이후 값은 무시된다.

 

num_list.insert(make_pair("삼", 9));
num_list.insert(make_pair("삼", 3));

따라서 위와 같은 코드를 실행할 경우 key값 "삼"에 대한 value는 9가 된다.

 

 

#include <iostream>
#include <map>
using namespace std;

int main() {
	//선언
	map<string, int> s;

	//insert
	s["삼"] = 9;
	s["삼"] = 3;

	s.insert(make_pair("사", 16));
	s.insert(make_pair("사", 4));

	cout << "삼 : " << s["삼"] << endl;
	cout << "사 : " << s["사"] << endl;
	cout << "오 : " << s["오"] << endl;
	if (s.end() != s.find("육"))
		cout << "육 : " << s["육"] << endl;

}

즉, 위와 같은 코드를 실행해보면

'Study > 프로그래밍 개념정리' 카테고리의 다른 글

C/C++) nth_element (header algorithm)  (0) 2019.11.16
C/C++) 문자 종류 판별 정리  (0) 2019.10.26
C++) 자주 쓰는 Vector 정리  (0) 2019.10.26
C++) 입출력 정리  (0) 2019.10.17
C++) Const (상수) Pointer 정리  (0) 2019.09.23