Computer Security

#14 C++ STL 연관 컨테이너 라이브러리 본문

프로그래밍/C++

#14 C++ STL 연관 컨테이너 라이브러리

쿠리 Kuri 2022. 6. 25. 18:30

C++ STL 연관 컨테이너
1) STL 연관 컨테이너 라이브러리는 매우 활용도가 높은 자료구조를 제공한다.
2) 연관 컨테이너는 키(Key)와 값(Value) 형태의 관련 있는 데이터를 쌍으로 저장하는 컨테이너다.
3) 가장 많이 사용되는 시퀀스 컨테이너는 집합(Set)과 맵(Map)이다.
- Set(집합)
- Multi Set(멀티 집합)
- Map(맵)
- Multi Map(멀티 맵)


C++ STL 연관 컨테이너: 집합
집합(Set)은 저장하는 데이터를 키(Key)로 사용하는 연관 컨테이너이다.

정렬된 위치에 데이터를 삽입한다는 점에서 검색 속도가 빠르다는 특징이 있다.

기본적으로 키의 중복을 허용하지 않는다.

 

코드 예시

#include <iostream>
#include <set>
//집합 라이브러리를 불러온다.
using namespace std;

int main(void) {
	int array[5] = { 2, 4, 6, 8, 10 };
	//2 4 6 8 10 인상태의 배열을
	set<int> s(array, array + 5);
	//집합 형태로 만들어준다.
	set<int>::iterator iter = s.begin(); //위치접근 iter활용해 처음으로 접근한다.
	for (; iter != s.end(); iter++) {
		//iter을 하나씩 늘려가면서 끝날때까지 실행한다.
		cout << *iter << ' ';
        //iter의 현재위치에 무엇이 있는지 출력한다.
	}
	//2 4 6 8 10 출력된다.
	cout << '\n';
	//줄 바꿈
	s.insert(1);
	s.insert(3);
	s.insert(5);
	//원소 1 3 5를 추가한다.
	iter = s.begin(); //똑같이 처음으로 지정해준다.
	for (; iter != s.end(); iter++) {
		//iter 하나씩 늘려가면서 끝날때 까지 실행한다.
		cout << *iter << ' ';
		//iter의 현재위치에 무엇이 있는지 출력한다.
		//오름차순 정렬이므로, 1 2 3 4 5 6 8 10이 출력된다.
	}
	cout << '\n';
		system("pause");
}

결과 값


C++ STL 연관 컨테이너: 맵
맵(Map)은 저장하는 데이터를 키(Key)와 값(Value) 쌍의 형태로 사용하는 연관 컨테이너다.

정렬된 위치에 데이터를 삽입한다는 점에서 검색 속도가 빠르다는 특징이 있다.

기본적으로 키의 중복을 허용하지 않는다.

 

코드 예시

#include <iostream>
#include <string>
#include <map>
//맵 라이브러리를 불러온다.

using namespace std;
int main(void) {
	map<string, int> m; //문자열과 숫자로 이루어진 맵을 선언한다.
	m["고동산"] = 1; m["홍길동"] = 2; m["이순신"] = 3;
	//고동산이 1 가짐. 홍길동 2 가짐. 이순신 3 가진상태.
	map<string, int>::iterator iter = m.begin(); //제일 처음부분으로 접근
	for (; iter != m.end(); iter++) {
		//iter을 하나씩 늘려가면서 끝날때까지 실행
		cout << iter->first << ":" << iter->second << '\n';
		//iter의 first처음 즉, 이름부분이 출력되고, : 출력, 그다음 숫자부분 출력
	}

    //고동산1
    //이순신3
    //홍길동2 (사전식 배열 정렬대로) 출력
	m["임꺽정"] = 4;
	//임꺽정 4 가진상태
	cout << m["없는 사람"] << '\n';
    //없는사람은 뒤가 없으니 0을 가지고 있고, 그 결과 값이 0 출력
	iter = m.begin(); //위와 같이 실행
	for (; iter != m.end(); iter++) {
		cout << iter->first << ":" << iter->second << '\n';
	}
    //고동산1
    //없는 사람0
    //이순신3
    //임꺽정4
    //홍길동2  출력
    system("pause");
	
}

결과 값

 

 

Comments