SlideShare a Scribd company logo
1 of 17
STL 컨테이너
컨테이너(Container)
• 같은 타입을 저장, 관리할 목적으로 만들어진 클래스.
• STL은 C++의 template 문법을 이용해 임의 타입에 대해 동작할 수 있게 만들어져 있기
때문에 어떠한 객체라 해도 타입만 동일하다면 모두 한 컨테이너에 담을 수 있다.
• STL은 C++의 template 문법을 이용해 임의 타입에 대해 동작할 수 있게 만들어져 있기
때문에 어떠한 객체라 해도 타입만 동일하다면 모두 한 컨테이너에 담을 수 있다.
컨테이너의 종류
• 표준 시퀀스(sequence) 컨테이너
• 컨테이너 원소가 자신만의 삽입 위치를 가짐.
• vector, deque(데크), list
• 표준 연관 컨테이너
• 저장 원소가 삽입 순서와 다르게 특정 정렬 기준에 의해 자동 정렬됨
• set, multiset, hash_set
• map, multimap, hash_map
• 어댑터 컨테이너(Adapter Container)
• 시퀀스 컨테이너를 적절히 변형하여 자료를 미리 정해진 일정한 방식에 따라 관리하는 컨
테이너다.
• 자료를 마음대로 넣고 뺄 수 없으며 컨테이너에서 정해놓은 방식대로만 조작할 수 있다.
• queue, stack, Priority queue
반복자(Iterator)
• 모든 컨테이너들에서 원소를 순회하고 접근하기 위한 일반화된 방법을 제공.
• 모든 컨테이너는 begin(), end()함수를 제공하며, 각각 순차열의 시작과 끝을 가리키는 반
복자를 반환한다.
• 반복자는 포인터와 같은 인터페이스를 제공한다.
• 반복자가 가리키는 데이터: *iter
반복자 사용 예
vector<int> v;
v.push_back(1);
…
v.push_back(10);
vector<int>::iterator iter;
for(iter = v.begin(); iter != v.end(); iter++)
cout << *iter << endl;
1. 시퀀스 컨테이너
• 삽입 순서에 따라 상대적인 위치를 갖는 컨테이너.
• vector
• list
• Deque
vector
• 선형 컨테이너로서 뒤에서만 넣고 뺄 수 있다.
• 하지만 erase함수로 지우는 것은 가능하다.
push_back(): 추가
pop_back(): 제거
push_back(), pop_back(), erase();
vector<int> v;
v.push_back(1);
…
v.push_back(10);
v.pop_back();
v.erase(v.begin() + 5);
• size: 현재 실제로 vector에 저장되어 있는 요소가 몇 개인지 반환.
• capacity: capacity는 메모리가 얼마나 할당되어 있는지를 반환.
• empty: empty는 vector에 요소가 하나도 들어있지 않은 경우 true를, 그렇지 않은 경우 false를 리턴.
 size가 0인지를 비교하는 것보다 empty를 사용하는 쪽이 더 성능이 좋기 때문에 vector가 비
어있는지 검사를 하고 싶을 때는 empty를 사용하는 쪽이 권장된다.
• clear: clear를 사용하면 vector에 존재하는 모든 요소를 삭제할 수 있다.
• insert: insert(iterator,value) 형식으로 사용하며, 해당 iterator 위치에 지정한 value를
• resize: vector의 크기를 지정한 개수로 강제로 바꿔버린다.
• reserve: 함수는 메모리를 미리 얼만큼 쓸 지 예약해 둔다.
 vector는 기존 할당된 메모리 이상의 데이터가 들어오면 자동으로 추가 할당하는데,
이때 연속된 메모리를 할당하기 위해 기존의 모든 데이터를 새로운 주소로 복사하게 된다.
이 때문에 상당한 비효율이 발생하는데, reserve로 초기에 크게 할당을 해주면 이런 비효율을
막을 수 있다.
vector API
deque
c
front
back push_back(): 추가
pop_back(): 제거
push_back(): 추가
pop_back(): 제거
• vector와 달리 연속된 주소에 데이터를 저장하지 않기 때문에 추가 할당 시에 데이터를 복사하고 지우는 작업이 필요 없다.
• []연산자로 임의의 원소에 접근 가능.
• 앞에서도 추가와 제거가 가능하다.
• 따라서 앞뒤에서 추가 제거가 빈번하다면 deque를 쓰는 것이 더 빠르며, 그 외 연산은 vector가 더 빠르다.
• 그 외 사항은 vector와 같다.
list
• 링크드 리스트로 구현.
• Vector에 비해 임의의 위치에 데이터 삽입이 빠르다.
• 임의의 위치에 한번에 접근할 수 없다.
• at(), []의 사용이 불가능 하다.
• 임의접근 반복자가 아닌 양방향 반복자를 제공한다.(++,--연산만 가능. +,- 연산 불가)
• 따라서 임의의 위치에 대한 삽입 삭제가 빈번하면 list를 쓴다. 그 외 연산은 vector가 빠르다.
front backpush_back(): 추가
pop_back(): 제거
push_back(): 추가
pop_back(): 제거
insert(): 삽입
2. 연관 컨테이너
• 삽입 순서에 따라 상대적인 위치를 갖는
컨테이너.
• set, hash_set
• map, hash_map
• 균형 이진 트리에 저장하며, 특정 정렬
기준에 따라 원소를 자동 정렬한다.
• 기본 정렬 기준은 less 조건자.
50
30 80
10 40 70 90
기본 정렬 기준: less
ex)
연관 컨테이너
• 모든 연관 컨테이너는 같은 인터페이스(생성자, 멤버함수, 연산자)를 제공한다.
• push_back(), push_front(), pop_back(), pop_front(), front(), back()을 제공하지 않음.
• 이진 트리를 사용하여 시간복잡도가 로그 시간인 찾기 연산, 삽입 연산을 제공한다.
• 키와 값처럼 서로 연관성이 있는 데이터를 하나로 묶어 저장한다.
저장대상 키 키+값
중복 불허 set map
중복 가능 multi_set multi_map
set
• 키만을 저장하고, 중복된 값을 허용하지 않는다.
std::set<int> id; // or std::set<int, greater<int>> id;
id.insert(131021);
Id.insert(131021); // false 반
• 주로 특정한 집합을 관리하는 것에 이용된다.
• set 사용시 유리한 조건
• 자료를 정렬해서 저장해야 할 때
• Key값이 존재하는지 아닌지 알아야 할 때
• 많은 자료를 저장하고, 검색 속도가 빨라야 할 때
set API
• find(k) : k 원소의 위치를 가리키는 반복자 반환.
• insert(k) : k를 삽입. (삽입한 원소를 가리키는 반복자, 삽입 성공 여부) 의 pair 객체 반환.
• key_comp() : 정렬기준 조건자 반환 (less or greater)
• upper_bound(k): k보다 작지 않은 첫 원소의 반복자 반환.
• lower_bount(k): k보다 크지 않은 마지막 원소의 반복자 반환.
map
• 키와 값을 함께 pair로 저장한다.
std::map<int, std::string> name;
std::pair<int, std::string> student;
student.first = 131021;
student.second = "김태우";
name.insert(student);
• 키로 값을 찾을 수 있다. [] 사용 가능.
student.erase(131021); //지우기
student[131021] = “송원석”; //해당원소 값 변경
student.find(131021); // 원소 찾기 -> 반복자 반환.
Student[112452] == “김명찬”으로 썼을 때, Student[112452]가 없다면
빈 데이터를 만들기 때문에 반드시 find로 Student[112452]가 있는지 체
크하고 해야한다.
hash_set, hash_map
• 데이터를 트리가 아니라 해시에 저장하여 검색속도를 높인 것이다.
• Set, map과 인터페이스는 각각 같다.
• 정렬하여 저장할 필요는 없고 빠른 검색이 필요할 때 쓴다.
(단일 검색에 유용)
• 정렬된 저장이 필요하면 map, set을 쓴다.
(범위 검색에 유용)

More Related Content

What's hot

Effective C++ Chapter 3 Summary
Effective C++ Chapter 3 SummaryEffective C++ Chapter 3 Summary
Effective C++ Chapter 3 SummarySeungYeonChoi10
 
Effective STL 1~4장 정리
Effective STL 1~4장 정리Effective STL 1~4장 정리
Effective STL 1~4장 정리Shin heemin
 
Binary Search
Binary SearchBinary Search
Binary Searchskku_npc
 
Windows via c++ chapter6
Windows via c++   chapter6Windows via c++   chapter6
Windows via c++ chapter6Shin heemin
 
Data Structures
Data StructuresData Structures
Data Structuresskku_npc
 
Windows via c/c++ 스터디9장
Windows via c/c++ 스터디9장Windows via c/c++ 스터디9장
Windows via c/c++ 스터디9장HolyTak
 
불변객체 적용으로 리액트 성능 최적화
불변객체 적용으로 리액트 성능 최적화불변객체 적용으로 리액트 성능 최적화
불변객체 적용으로 리액트 성능 최적화Hun Yong Song
 
Windows via c++ part 1
Windows via c++ part 1Windows via c++ part 1
Windows via c++ part 1Shin heemin
 
안드로이드스터디 5
안드로이드스터디 5안드로이드스터디 5
안드로이드스터디 5jangpd007
 
[Swift] Data Structure - Array
[Swift] Data Structure - Array[Swift] Data Structure - Array
[Swift] Data Structure - ArrayBill Kim
 
Windows via c/c++ ch03. 커널오브젝트
Windows via c/c++ ch03. 커널오브젝트Windows via c/c++ ch03. 커널오브젝트
Windows via c/c++ ch03. 커널오브젝트ssuser0c2478
 
Android Programming
Android ProgrammingAndroid Programming
Android ProgrammingJake Yoon
 
이것이 자바다 Chap. 6 클래스(CLASS)(KOR)
이것이 자바다 Chap. 6 클래스(CLASS)(KOR)이것이 자바다 Chap. 6 클래스(CLASS)(KOR)
이것이 자바다 Chap. 6 클래스(CLASS)(KOR)MIN SEOK KOO
 
모어이펙티브 C++ 5,6
모어이펙티브 C++ 5,6모어이펙티브 C++ 5,6
모어이펙티브 C++ 5,6quxn6
 
[부스트캠프 Tech Talk] 신원지_Wandb Visualization
[부스트캠프 Tech Talk] 신원지_Wandb Visualization[부스트캠프 Tech Talk] 신원지_Wandb Visualization
[부스트캠프 Tech Talk] 신원지_Wandb VisualizationCONNECT FOUNDATION
 

What's hot (18)

Effective C++ Chapter 3 Summary
Effective C++ Chapter 3 SummaryEffective C++ Chapter 3 Summary
Effective C++ Chapter 3 Summary
 
Gpg1
Gpg1Gpg1
Gpg1
 
Effective STL 1~4장 정리
Effective STL 1~4장 정리Effective STL 1~4장 정리
Effective STL 1~4장 정리
 
Binary Search
Binary SearchBinary Search
Binary Search
 
Windows via c++ chapter6
Windows via c++   chapter6Windows via c++   chapter6
Windows via c++ chapter6
 
Data Structures
Data StructuresData Structures
Data Structures
 
Windows via c/c++ 스터디9장
Windows via c/c++ 스터디9장Windows via c/c++ 스터디9장
Windows via c/c++ 스터디9장
 
불변객체 적용으로 리액트 성능 최적화
불변객체 적용으로 리액트 성능 최적화불변객체 적용으로 리액트 성능 최적화
불변객체 적용으로 리액트 성능 최적화
 
120114 windows viacpp_03
120114 windows viacpp_03120114 windows viacpp_03
120114 windows viacpp_03
 
Windows via c++ part 1
Windows via c++ part 1Windows via c++ part 1
Windows via c++ part 1
 
01.early bird singleton
01.early bird singleton01.early bird singleton
01.early bird singleton
 
안드로이드스터디 5
안드로이드스터디 5안드로이드스터디 5
안드로이드스터디 5
 
[Swift] Data Structure - Array
[Swift] Data Structure - Array[Swift] Data Structure - Array
[Swift] Data Structure - Array
 
Windows via c/c++ ch03. 커널오브젝트
Windows via c/c++ ch03. 커널오브젝트Windows via c/c++ ch03. 커널오브젝트
Windows via c/c++ ch03. 커널오브젝트
 
Android Programming
Android ProgrammingAndroid Programming
Android Programming
 
이것이 자바다 Chap. 6 클래스(CLASS)(KOR)
이것이 자바다 Chap. 6 클래스(CLASS)(KOR)이것이 자바다 Chap. 6 클래스(CLASS)(KOR)
이것이 자바다 Chap. 6 클래스(CLASS)(KOR)
 
모어이펙티브 C++ 5,6
모어이펙티브 C++ 5,6모어이펙티브 C++ 5,6
모어이펙티브 C++ 5,6
 
[부스트캠프 Tech Talk] 신원지_Wandb Visualization
[부스트캠프 Tech Talk] 신원지_Wandb Visualization[부스트캠프 Tech Talk] 신원지_Wandb Visualization
[부스트캠프 Tech Talk] 신원지_Wandb Visualization
 

Similar to Stl 컨테이너

C++ Advanced 강의 4주차
 C++ Advanced 강의 4주차 C++ Advanced 강의 4주차
C++ Advanced 강의 4주차HyunJoon Park
 
데이터 분석 2 - 동기부여
데이터 분석 2 - 동기부여데이터 분석 2 - 동기부여
데이터 분석 2 - 동기부여Jaewook Byun
 
XE 오픈 세미나(2014-04-26) - 김동현 "XE 코어 구조론"
XE 오픈 세미나(2014-04-26) - 김동현 "XE 코어 구조론"XE 오픈 세미나(2014-04-26) - 김동현 "XE 코어 구조론"
XE 오픈 세미나(2014-04-26) - 김동현 "XE 코어 구조론"XpressEngine
 
effective c++ chapter 3~4 정리
effective c++ chapter 3~4 정리effective c++ chapter 3~4 정리
effective c++ chapter 3~4 정리Injae Lee
 
Xe 구조에 대한 이해
Xe 구조에 대한 이해Xe 구조에 대한 이해
Xe 구조에 대한 이해Dong Hyun Kim
 
개경프 1주차 Stl study
개경프 1주차 Stl study개경프 1주차 Stl study
개경프 1주차 Stl study경 송
 
자바로 배우는 자료구조
자바로 배우는 자료구조자바로 배우는 자료구조
자바로 배우는 자료구조중선 곽
 
Elastic Search (엘라스틱서치) 입문
Elastic Search (엘라스틱서치) 입문Elastic Search (엘라스틱서치) 입문
Elastic Search (엘라스틱서치) 입문SeungHyun Eom
 
연산자 오버로딩
연산자 오버로딩연산자 오버로딩
연산자 오버로딩수빈 박
 
Mec++ chapter3,4
Mec++ chapter3,4Mec++ chapter3,4
Mec++ chapter3,4문익 장
 
Java collections framework
Java collections frameworkJava collections framework
Java collections framework경주 전
 
2014-15 Intermediate C++ Study #7
2014-15 Intermediate C++ Study #72014-15 Intermediate C++ Study #7
2014-15 Intermediate C++ Study #7Chris Ohk
 
6 tips to supercharge c++11 vector performance
6 tips to supercharge c++11 vector performance6 tips to supercharge c++11 vector performance
6 tips to supercharge c++11 vector performance금성 고
 
Java advancd ed10
Java advancd ed10Java advancd ed10
Java advancd ed10hungrok
 
Collection framework
Collection frameworkCollection framework
Collection frameworkssuser34b989
 
More effective c++ chapter1,2
More effective c++ chapter1,2More effective c++ chapter1,2
More effective c++ chapter1,2문익 장
 

Similar to Stl 컨테이너 (20)

C++ Advanced 강의 4주차
 C++ Advanced 강의 4주차 C++ Advanced 강의 4주차
C++ Advanced 강의 4주차
 
iOS-3
iOS-3iOS-3
iOS-3
 
20 swift 집합형
20 swift 집합형20 swift 집합형
20 swift 집합형
 
데이터 분석 2 - 동기부여
데이터 분석 2 - 동기부여데이터 분석 2 - 동기부여
데이터 분석 2 - 동기부여
 
XE 오픈 세미나(2014-04-26) - 김동현 "XE 코어 구조론"
XE 오픈 세미나(2014-04-26) - 김동현 "XE 코어 구조론"XE 오픈 세미나(2014-04-26) - 김동현 "XE 코어 구조론"
XE 오픈 세미나(2014-04-26) - 김동현 "XE 코어 구조론"
 
effective c++ chapter 3~4 정리
effective c++ chapter 3~4 정리effective c++ chapter 3~4 정리
effective c++ chapter 3~4 정리
 
Xe 구조에 대한 이해
Xe 구조에 대한 이해Xe 구조에 대한 이해
Xe 구조에 대한 이해
 
개경프 1주차 Stl study
개경프 1주차 Stl study개경프 1주차 Stl study
개경프 1주차 Stl study
 
자바로 배우는 자료구조
자바로 배우는 자료구조자바로 배우는 자료구조
자바로 배우는 자료구조
 
Elastic Search (엘라스틱서치) 입문
Elastic Search (엘라스틱서치) 입문Elastic Search (엘라스틱서치) 입문
Elastic Search (엘라스틱서치) 입문
 
연산자 오버로딩
연산자 오버로딩연산자 오버로딩
연산자 오버로딩
 
엔티티(Entity)_스프링학원/IT학원추천/스프링학원추천
엔티티(Entity)_스프링학원/IT학원추천/스프링학원추천엔티티(Entity)_스프링학원/IT학원추천/스프링학원추천
엔티티(Entity)_스프링학원/IT학원추천/스프링학원추천
 
Mec++ chapter3,4
Mec++ chapter3,4Mec++ chapter3,4
Mec++ chapter3,4
 
Java collections framework
Java collections frameworkJava collections framework
Java collections framework
 
2014-15 Intermediate C++ Study #7
2014-15 Intermediate C++ Study #72014-15 Intermediate C++ Study #7
2014-15 Intermediate C++ Study #7
 
6 tips to supercharge c++11 vector performance
6 tips to supercharge c++11 vector performance6 tips to supercharge c++11 vector performance
6 tips to supercharge c++11 vector performance
 
Java advancd ed10
Java advancd ed10Java advancd ed10
Java advancd ed10
 
DDD Repository
DDD RepositoryDDD Repository
DDD Repository
 
Collection framework
Collection frameworkCollection framework
Collection framework
 
More effective c++ chapter1,2
More effective c++ chapter1,2More effective c++ chapter1,2
More effective c++ chapter1,2
 

Stl 컨테이너

  • 2. 컨테이너(Container) • 같은 타입을 저장, 관리할 목적으로 만들어진 클래스. • STL은 C++의 template 문법을 이용해 임의 타입에 대해 동작할 수 있게 만들어져 있기 때문에 어떠한 객체라 해도 타입만 동일하다면 모두 한 컨테이너에 담을 수 있다. • STL은 C++의 template 문법을 이용해 임의 타입에 대해 동작할 수 있게 만들어져 있기 때문에 어떠한 객체라 해도 타입만 동일하다면 모두 한 컨테이너에 담을 수 있다.
  • 3. 컨테이너의 종류 • 표준 시퀀스(sequence) 컨테이너 • 컨테이너 원소가 자신만의 삽입 위치를 가짐. • vector, deque(데크), list • 표준 연관 컨테이너 • 저장 원소가 삽입 순서와 다르게 특정 정렬 기준에 의해 자동 정렬됨 • set, multiset, hash_set • map, multimap, hash_map • 어댑터 컨테이너(Adapter Container) • 시퀀스 컨테이너를 적절히 변형하여 자료를 미리 정해진 일정한 방식에 따라 관리하는 컨 테이너다. • 자료를 마음대로 넣고 뺄 수 없으며 컨테이너에서 정해놓은 방식대로만 조작할 수 있다. • queue, stack, Priority queue
  • 4. 반복자(Iterator) • 모든 컨테이너들에서 원소를 순회하고 접근하기 위한 일반화된 방법을 제공. • 모든 컨테이너는 begin(), end()함수를 제공하며, 각각 순차열의 시작과 끝을 가리키는 반 복자를 반환한다. • 반복자는 포인터와 같은 인터페이스를 제공한다. • 반복자가 가리키는 데이터: *iter
  • 5. 반복자 사용 예 vector<int> v; v.push_back(1); … v.push_back(10); vector<int>::iterator iter; for(iter = v.begin(); iter != v.end(); iter++) cout << *iter << endl;
  • 6. 1. 시퀀스 컨테이너 • 삽입 순서에 따라 상대적인 위치를 갖는 컨테이너. • vector • list • Deque
  • 7. vector • 선형 컨테이너로서 뒤에서만 넣고 뺄 수 있다. • 하지만 erase함수로 지우는 것은 가능하다. push_back(): 추가 pop_back(): 제거
  • 8. push_back(), pop_back(), erase(); vector<int> v; v.push_back(1); … v.push_back(10); v.pop_back(); v.erase(v.begin() + 5);
  • 9. • size: 현재 실제로 vector에 저장되어 있는 요소가 몇 개인지 반환. • capacity: capacity는 메모리가 얼마나 할당되어 있는지를 반환. • empty: empty는 vector에 요소가 하나도 들어있지 않은 경우 true를, 그렇지 않은 경우 false를 리턴.  size가 0인지를 비교하는 것보다 empty를 사용하는 쪽이 더 성능이 좋기 때문에 vector가 비 어있는지 검사를 하고 싶을 때는 empty를 사용하는 쪽이 권장된다. • clear: clear를 사용하면 vector에 존재하는 모든 요소를 삭제할 수 있다. • insert: insert(iterator,value) 형식으로 사용하며, 해당 iterator 위치에 지정한 value를 • resize: vector의 크기를 지정한 개수로 강제로 바꿔버린다. • reserve: 함수는 메모리를 미리 얼만큼 쓸 지 예약해 둔다.  vector는 기존 할당된 메모리 이상의 데이터가 들어오면 자동으로 추가 할당하는데, 이때 연속된 메모리를 할당하기 위해 기존의 모든 데이터를 새로운 주소로 복사하게 된다. 이 때문에 상당한 비효율이 발생하는데, reserve로 초기에 크게 할당을 해주면 이런 비효율을 막을 수 있다. vector API
  • 10. deque c front back push_back(): 추가 pop_back(): 제거 push_back(): 추가 pop_back(): 제거 • vector와 달리 연속된 주소에 데이터를 저장하지 않기 때문에 추가 할당 시에 데이터를 복사하고 지우는 작업이 필요 없다. • []연산자로 임의의 원소에 접근 가능. • 앞에서도 추가와 제거가 가능하다. • 따라서 앞뒤에서 추가 제거가 빈번하다면 deque를 쓰는 것이 더 빠르며, 그 외 연산은 vector가 더 빠르다. • 그 외 사항은 vector와 같다.
  • 11. list • 링크드 리스트로 구현. • Vector에 비해 임의의 위치에 데이터 삽입이 빠르다. • 임의의 위치에 한번에 접근할 수 없다. • at(), []의 사용이 불가능 하다. • 임의접근 반복자가 아닌 양방향 반복자를 제공한다.(++,--연산만 가능. +,- 연산 불가) • 따라서 임의의 위치에 대한 삽입 삭제가 빈번하면 list를 쓴다. 그 외 연산은 vector가 빠르다. front backpush_back(): 추가 pop_back(): 제거 push_back(): 추가 pop_back(): 제거 insert(): 삽입
  • 12. 2. 연관 컨테이너 • 삽입 순서에 따라 상대적인 위치를 갖는 컨테이너. • set, hash_set • map, hash_map • 균형 이진 트리에 저장하며, 특정 정렬 기준에 따라 원소를 자동 정렬한다. • 기본 정렬 기준은 less 조건자. 50 30 80 10 40 70 90 기본 정렬 기준: less ex)
  • 13. 연관 컨테이너 • 모든 연관 컨테이너는 같은 인터페이스(생성자, 멤버함수, 연산자)를 제공한다. • push_back(), push_front(), pop_back(), pop_front(), front(), back()을 제공하지 않음. • 이진 트리를 사용하여 시간복잡도가 로그 시간인 찾기 연산, 삽입 연산을 제공한다. • 키와 값처럼 서로 연관성이 있는 데이터를 하나로 묶어 저장한다. 저장대상 키 키+값 중복 불허 set map 중복 가능 multi_set multi_map
  • 14. set • 키만을 저장하고, 중복된 값을 허용하지 않는다. std::set<int> id; // or std::set<int, greater<int>> id; id.insert(131021); Id.insert(131021); // false 반 • 주로 특정한 집합을 관리하는 것에 이용된다. • set 사용시 유리한 조건 • 자료를 정렬해서 저장해야 할 때 • Key값이 존재하는지 아닌지 알아야 할 때 • 많은 자료를 저장하고, 검색 속도가 빨라야 할 때
  • 15. set API • find(k) : k 원소의 위치를 가리키는 반복자 반환. • insert(k) : k를 삽입. (삽입한 원소를 가리키는 반복자, 삽입 성공 여부) 의 pair 객체 반환. • key_comp() : 정렬기준 조건자 반환 (less or greater) • upper_bound(k): k보다 작지 않은 첫 원소의 반복자 반환. • lower_bount(k): k보다 크지 않은 마지막 원소의 반복자 반환.
  • 16. map • 키와 값을 함께 pair로 저장한다. std::map<int, std::string> name; std::pair<int, std::string> student; student.first = 131021; student.second = "김태우"; name.insert(student); • 키로 값을 찾을 수 있다. [] 사용 가능. student.erase(131021); //지우기 student[131021] = “송원석”; //해당원소 값 변경 student.find(131021); // 원소 찾기 -> 반복자 반환. Student[112452] == “김명찬”으로 썼을 때, Student[112452]가 없다면 빈 데이터를 만들기 때문에 반드시 find로 Student[112452]가 있는지 체 크하고 해야한다.
  • 17. hash_set, hash_map • 데이터를 트리가 아니라 해시에 저장하여 검색속도를 높인 것이다. • Set, map과 인터페이스는 각각 같다. • 정렬하여 저장할 필요는 없고 빠른 검색이 필요할 때 쓴다. (단일 검색에 유용) • 정렬된 저장이 필요하면 map, set을 쓴다. (범위 검색에 유용)