일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 시스템
- 리눅스커널
- Pwnable.kr
- 시스템해킹
- radare2
- 시스템 프로그래밍
- C언어
- 커널
- 시스템프로그래밍
- kernel
- Leviathan
- 시그널
- 리버싱
- 알고리즘
- 하드링크
- 리눅스
- pwn.college
- 프로그래밍
- multiplexing
- write up
- wargame
- C++
- 워게임
- pwncollege
- 포너블
- 리눅스 커널
- 컴퓨터구조
- Bandit
- css
- 어셈블리어
Archives
- Today
- Total
Computer Security
#14 C++ STL 연관 컨테이너 라이브러리 본문
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");
}
결과 값
'프로그래밍 > C++' 카테고리의 다른 글
#16 소켓 프로그래밍이란? (0) | 2022.06.30 |
---|---|
#15 C++ 예외 처리 (0) | 2022.06.26 |
#13 C++ STL 시퀀스 컨테이너 라이브러리 (0) | 2022.06.24 |
#12 C++ STL 컨테이너 어댑터 라이브러리 (0) | 2022.06.23 |
#11 C++ 스마트 포인터 (0) | 2022.06.22 |
Comments