SlideShare une entreprise Scribd logo
1  sur  16
Télécharger pour lire hors ligne
VECTOR
LIST
MAP
141055 우재우
PL in C++
V
E
C
T
O
R
VECTOR?
• 임의 타입의 동적 배열
• 동일 타입 자료 집합인 템플릿 기반의 시퀀스 컨테이너
• 요소의 개수에 따라 자동으로 메모리 관리
• 자료 관리에 탁월한 성능
V
E
C
T
O
R
VECTOR의 장점
• 요소들의 크기가 같고, 인접한 위치에 이웃하여 배치되므로
메모리를 적게 차지하며 임의 위치를 빠른 속도로 액세스 할 수 있다.
• 최상위 레벨의 임의 접근 반복자를 제공하므로
STL의 모든 알고리즘을 사용할 수 있다.
V
E
C
T
O
R
VECTOR의 단점
• 삽입, 삭제 시 요소의 인접 배치 원칙을 지키기 위해
요소를 이동시켜야 하는 번거로움이 있어
삽입, 삭제 속도가 느리다.
• 삽입, 삭제가 빈번할 때는 벡터보다 리스트가 좋다.
V
E
C
T
O
R
#include <vector>
vector<Type> v1; //벡터 v1 생성
v1.push_back(a); //a라는 원소를 벡터 끝에 추가
v1.pop_back(); //벡터 끝 요소를 삭제
vi.insert(vi.begin()+3, b); //시작으로부터 세 번째에 b 삽입
vi.insert(vi.begin(), 10, c); //c를 10개 일괄 삽입
vi.erase(vi.begin()+3); //시작으로부터 세 번째 요소 삭제
vi.erase(vi.begin()+5, vi.begin()+8); //5~8 번째 요소들 삭제
VECTOR의 삽입과 삭제
V
E
C
T
O
R
VECTOR 함수
#include <vector>
vector<Type> v2; //벡터 v2 생성
v2.size(); //벡터 v2 크기 반환
v2.max_size(); //벡터가 관리할 수 있는 최대 요소 개소를 조사
v2.capacity(); //할당된 요소 개수를 조사
v2.resize(n); //벡터의 크기를 n으로 변경
v2.reserve(n); //미리 필요한 메모리를 할당해 놓는 함수 (자동할당보다 빠름)
v2.clear(); //벡터 내 모든 요소 삭제
v2.empty(); //벡터가 비어 있는지 점검 (v2.size()==0 보다 빠름)
L
I
S
T
LIST?
• Doubly Linked List
• 용도면에서는 vector와 동일, 인터페이스도 거의 유사
• 그러나 내부적으로는 vector와 판이하게 다른 구조
(vector는 요소를 직접 가리키는 포인터, list는 링크를 가리키는 포인터로 구성)
• vector와
L
I
S
T
LIST의 장점
• 위치와 요소 개수에 상관없이 삽입, 삭제가 가능해서
벡터보다 처리속도가 훨씬 빠르다.
• 삽입, 삭제되는 노드와 앞 뒤 노드의 링크만 바뀌므로
나머지 노드들에 영향을 주지 않는다. (반복자가 무효와 되지 않는다.)
• 처음부터 미리 크기를 결정할 필요가 없다.
L
I
S
T
LIST의 단점
• 반복자(iterator)가 +n 연산을 지원하지 않는다.
따라서 순서값([]연산자)으로 접근할 수 없다.
• 반드시 순회를 해야만 원하는 요소를 찾을 수 있다.
• 링크 구조로 인해 메모리 소모량이 vector보다 많다.
• 삽입, 삭제 시마다 노드를 할당, 해제하는 과정을 반복하므로
메모리 단편화가 심화된다.
L
I
S
T
#include <list>
list<Type> l1; //리스트 l1 생성
l1.push_front(a); //a라는 요소를 리스트 처음에 추가
l1.push_back(b); //b라는 요소를 리스트 처음에 추가
l1.insert(iterator, c); //iterator 앞에 c 삽입
l1.erase(iterator); //iterator 노드 삭제
※ iterator는 it = li.begin(), li.end()를 기준으로 it++, it--로 이동
l1.remove(d); //값을 검색해 list 내 모든 d를 찾아서 삭제
LIST의 삽입과 삭제
L
I
S
T
LIST 함수
#include <list>
list<Type> l2; //리스트 l2 생성
l2.swap(l3); //l2와 l3 교환
l2.reverse(); //리스트 순서 역순으로 바꾸기
l2.merge(l3); //l2와 l3 병합
l2.splice(iterator, l4); //리스트 l4의 내용을 iterator 위치로 이동
l2.sort(); //리스트 내용을 퀵소트
l2.unique(); //리스트 연속된 중복 요소 제거
M
A
P
MAP?
• 키와 값을 쌍으로 관리하는 연관 컨테이너
cf) SET은 키의 집합만 관리
• 키를 정렬 및 검색의 기준으로 사용
• 키가 맵의 내부적인 구성이나 관리 방법에는 영향을 미치지 않는다.
MAP의 장점
• 검색 속도가 빠르다. 검색에는 최적의 컨테이너
cf) sparse matrix도 거대한 이차원 배열보다는 맵으로 표현하는 것이 정석이다.
M
A
P
MAP의 단점
• 키를 삽입할 때마다 정렬된 위치를 찾아서 삽입해야 하므로
대용량의 맵을 작성하는 데에는 시간이 많이 걸린다.
• 여러 값이 짝지어진 멀티 맵의 경우 확정적인 결과를 리턴할 수 없다.
• pair 클래스는 ==연산자를 제공하지 않기 때문에
pair 단위로 검색할 수 없다.
• 첫 번째 들어가는 Key는 한 번 삽입되면 무결성을 해치지 않기 위해
수정할 수 없다. 삭제하고 다시 삽입해야 한다.
M
A
P
#include <map>
map<Type1, Type2> m1; //맵 m1 생성
m1.insert(pair<Type1, Type2>(a, b)); //a를 키로 b를 값으로 삽입
m1[c] = d; //c를 키로 d를 값으로 삽입
m1.erase(m1.begin()); //첫 번째 쌍 삭제
m1.erase(a); //first 키를 직접 입력하여 삭제
MAP의 삽입과 삭제
M
A
P
MAP 함수
#include <map>
map<Type> m2; //맵 m2 생성
it = m2.find(a); //키 값 a로 iterator 검색(반환)
cf) it->first는 첫 번째 타입의 값, it->second는 두 번째 타입의 값
m2.size(); //m2의 크기를 반환
m2.max_size(); //m2가 가지는 최대 크기를 반환
m2.swap(m3); //m2와 m3의 내용을 교체
m2.clear(); //m2 내용 전체 삭제
m2.empty(); //m2가 비었는지 확인
m2.lower_bound(b); //키 값 b보다 낮은 쌍의 iterator 반환
m2.upper_bound(c); //키 값 c보다 높은 쌍의 iterator 반환
m2.equal_range(d); //m2.first = m2.lower_bound(d)
m2.second = m2.upper_bound(d)
M
A
P

Contenu connexe

Tendances

이것이 자바다 Chap. 6 클래스(CLASS)(KOR)
이것이 자바다 Chap. 6 클래스(CLASS)(KOR)이것이 자바다 Chap. 6 클래스(CLASS)(KOR)
이것이 자바다 Chap. 6 클래스(CLASS)(KOR)MIN SEOK KOO
 
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)MIN SEOK KOO
 
Start IoT with JavaScript - 5.객체2
Start IoT with JavaScript - 5.객체2Start IoT with JavaScript - 5.객체2
Start IoT with JavaScript - 5.객체2Park Jonggun
 
Start IoT with JavaScript - 4.객체1
Start IoT with JavaScript - 4.객체1Start IoT with JavaScript - 4.객체1
Start IoT with JavaScript - 4.객체1Park Jonggun
 
Start IoT with JavaScript - 2.연산자
Start IoT with JavaScript - 2.연산자Start IoT with JavaScript - 2.연산자
Start IoT with JavaScript - 2.연산자Park Jonggun
 
[Swift] Iterator
[Swift] Iterator[Swift] Iterator
[Swift] IteratorBill Kim
 
파이썬 크롤링 모듈
파이썬 크롤링 모듈파이썬 크롤링 모듈
파이썬 크롤링 모듈Yong Joon Moon
 
Haskell study 15
Haskell study 15Haskell study 15
Haskell study 15Nam Hyeonuk
 
이펙티브 C++ 5,6 장 스터디
이펙티브 C++ 5,6 장 스터디이펙티브 C++ 5,6 장 스터디
이펙티브 C++ 5,6 장 스터디quxn6
 
이펙티브 C++ 공부
이펙티브 C++ 공부이펙티브 C++ 공부
이펙티브 C++ 공부quxn6
 
Start IoT with JavaScript - 6.함수
Start IoT with JavaScript - 6.함수Start IoT with JavaScript - 6.함수
Start IoT with JavaScript - 6.함수Park Jonggun
 
Swift3 generic
Swift3 genericSwift3 generic
Swift3 genericEunjoo Im
 
파이썬정리 20160130
파이썬정리 20160130파이썬정리 20160130
파이썬정리 20160130Yong Joon Moon
 
Haskell study 12
Haskell study 12Haskell study 12
Haskell study 12Nam Hyeonuk
 
Swift3 subscript inheritance initialization
Swift3 subscript inheritance initializationSwift3 subscript inheritance initialization
Swift3 subscript inheritance initializationEunjoo Im
 
이펙티브 C++ 스터디
이펙티브 C++ 스터디이펙티브 C++ 스터디
이펙티브 C++ 스터디quxn6
 
Swift3 typecasting nested_type
Swift3 typecasting nested_typeSwift3 typecasting nested_type
Swift3 typecasting nested_typeEunjoo Im
 
Start IoT with JavaScript - 1.기초
Start IoT with JavaScript - 1.기초Start IoT with JavaScript - 1.기초
Start IoT with JavaScript - 1.기초Park Jonggun
 

Tendances (20)

Stl 컨테이너
Stl 컨테이너Stl 컨테이너
Stl 컨테이너
 
이것이 자바다 Chap. 6 클래스(CLASS)(KOR)
이것이 자바다 Chap. 6 클래스(CLASS)(KOR)이것이 자바다 Chap. 6 클래스(CLASS)(KOR)
이것이 자바다 Chap. 6 클래스(CLASS)(KOR)
 
Swift 0x17 generics
Swift 0x17 genericsSwift 0x17 generics
Swift 0x17 generics
 
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
 
Start IoT with JavaScript - 5.객체2
Start IoT with JavaScript - 5.객체2Start IoT with JavaScript - 5.객체2
Start IoT with JavaScript - 5.객체2
 
Start IoT with JavaScript - 4.객체1
Start IoT with JavaScript - 4.객체1Start IoT with JavaScript - 4.객체1
Start IoT with JavaScript - 4.객체1
 
Start IoT with JavaScript - 2.연산자
Start IoT with JavaScript - 2.연산자Start IoT with JavaScript - 2.연산자
Start IoT with JavaScript - 2.연산자
 
[Swift] Iterator
[Swift] Iterator[Swift] Iterator
[Swift] Iterator
 
파이썬 크롤링 모듈
파이썬 크롤링 모듈파이썬 크롤링 모듈
파이썬 크롤링 모듈
 
Haskell study 15
Haskell study 15Haskell study 15
Haskell study 15
 
이펙티브 C++ 5,6 장 스터디
이펙티브 C++ 5,6 장 스터디이펙티브 C++ 5,6 장 스터디
이펙티브 C++ 5,6 장 스터디
 
이펙티브 C++ 공부
이펙티브 C++ 공부이펙티브 C++ 공부
이펙티브 C++ 공부
 
Start IoT with JavaScript - 6.함수
Start IoT with JavaScript - 6.함수Start IoT with JavaScript - 6.함수
Start IoT with JavaScript - 6.함수
 
Swift3 generic
Swift3 genericSwift3 generic
Swift3 generic
 
파이썬정리 20160130
파이썬정리 20160130파이썬정리 20160130
파이썬정리 20160130
 
Haskell study 12
Haskell study 12Haskell study 12
Haskell study 12
 
Swift3 subscript inheritance initialization
Swift3 subscript inheritance initializationSwift3 subscript inheritance initialization
Swift3 subscript inheritance initialization
 
이펙티브 C++ 스터디
이펙티브 C++ 스터디이펙티브 C++ 스터디
이펙티브 C++ 스터디
 
Swift3 typecasting nested_type
Swift3 typecasting nested_typeSwift3 typecasting nested_type
Swift3 typecasting nested_type
 
Start IoT with JavaScript - 1.기초
Start IoT with JavaScript - 1.기초Start IoT with JavaScript - 1.기초
Start IoT with JavaScript - 1.기초
 

Plus de Jae Woo Woo

Taste Picker 개발경험기
Taste Picker 개발경험기Taste Picker 개발경험기
Taste Picker 개발경험기Jae Woo Woo
 
[WEB UI BASIC] WEB Animation 2탄
[WEB UI BASIC] WEB Animation 2탄[WEB UI BASIC] WEB Animation 2탄
[WEB UI BASIC] WEB Animation 2탄Jae Woo Woo
 
[WEB UI BASIC] WEB Animation 1탄
[WEB UI BASIC] WEB Animation 1탄[WEB UI BASIC] WEB Animation 1탄
[WEB UI BASIC] WEB Animation 1탄Jae Woo Woo
 
[WEB UI BASIC] JavaScript 4탄
[WEB UI BASIC] JavaScript 4탄[WEB UI BASIC] JavaScript 4탄
[WEB UI BASIC] JavaScript 4탄Jae Woo Woo
 
[WEB UI BASIC] JavaScript 3탄
[WEB UI BASIC] JavaScript 3탄[WEB UI BASIC] JavaScript 3탄
[WEB UI BASIC] JavaScript 3탄Jae Woo Woo
 
[WEB UI ADVANCED] Mobile Touch Event
[WEB UI ADVANCED] Mobile Touch Event[WEB UI ADVANCED] Mobile Touch Event
[WEB UI ADVANCED] Mobile Touch EventJae Woo Woo
 
[WEB UI BASIC] Javascript 2탄
[WEB UI BASIC] Javascript 2탄[WEB UI BASIC] Javascript 2탄
[WEB UI BASIC] Javascript 2탄Jae Woo Woo
 
[WEB UI ADVANCED] Mobile WEB 개발하기
[WEB UI ADVANCED] Mobile WEB 개발하기[WEB UI ADVANCED] Mobile WEB 개발하기
[WEB UI ADVANCED] Mobile WEB 개발하기Jae Woo Woo
 
[WEB UI BASIC] JavaScript 1탄
[WEB UI BASIC] JavaScript 1탄[WEB UI BASIC] JavaScript 1탄
[WEB UI BASIC] JavaScript 1탄Jae Woo Woo
 
Naver 웹툰 앱 사용성 조사
Naver 웹툰 앱 사용성 조사Naver 웹툰 앱 사용성 조사
Naver 웹툰 앱 사용성 조사Jae Woo Woo
 
[WEB UI BASIC] CSS_2
[WEB UI BASIC] CSS_2[WEB UI BASIC] CSS_2
[WEB UI BASIC] CSS_2Jae Woo Woo
 
[WEB UI BASIC] CSS_1
[WEB UI BASIC] CSS_1[WEB UI BASIC] CSS_1
[WEB UI BASIC] CSS_1Jae Woo Woo
 
[WEB UI BASIC] WEB과 HTML
[WEB UI BASIC] WEB과 HTML[WEB UI BASIC] WEB과 HTML
[WEB UI BASIC] WEB과 HTMLJae Woo Woo
 
Swimming Smith 포스트 모템
Swimming Smith 포스트 모템Swimming Smith 포스트 모템
Swimming Smith 포스트 모템Jae Woo Woo
 
Swimming Smith 개발기
Swimming Smith 개발기Swimming Smith 개발기
Swimming Smith 개발기Jae Woo Woo
 
XCOM_Post Mortem
XCOM_Post MortemXCOM_Post Mortem
XCOM_Post MortemJae Woo Woo
 

Plus de Jae Woo Woo (17)

Taste Picker 개발경험기
Taste Picker 개발경험기Taste Picker 개발경험기
Taste Picker 개발경험기
 
[WEB UI BASIC] WEB Animation 2탄
[WEB UI BASIC] WEB Animation 2탄[WEB UI BASIC] WEB Animation 2탄
[WEB UI BASIC] WEB Animation 2탄
 
[WEB UI BASIC] WEB Animation 1탄
[WEB UI BASIC] WEB Animation 1탄[WEB UI BASIC] WEB Animation 1탄
[WEB UI BASIC] WEB Animation 1탄
 
[WEB UI BASIC] JavaScript 4탄
[WEB UI BASIC] JavaScript 4탄[WEB UI BASIC] JavaScript 4탄
[WEB UI BASIC] JavaScript 4탄
 
[WEB UI BASIC] JavaScript 3탄
[WEB UI BASIC] JavaScript 3탄[WEB UI BASIC] JavaScript 3탄
[WEB UI BASIC] JavaScript 3탄
 
[DATABASE] Join
[DATABASE] Join[DATABASE] Join
[DATABASE] Join
 
[WEB UI ADVANCED] Mobile Touch Event
[WEB UI ADVANCED] Mobile Touch Event[WEB UI ADVANCED] Mobile Touch Event
[WEB UI ADVANCED] Mobile Touch Event
 
[WEB UI BASIC] Javascript 2탄
[WEB UI BASIC] Javascript 2탄[WEB UI BASIC] Javascript 2탄
[WEB UI BASIC] Javascript 2탄
 
[WEB UI ADVANCED] Mobile WEB 개발하기
[WEB UI ADVANCED] Mobile WEB 개발하기[WEB UI ADVANCED] Mobile WEB 개발하기
[WEB UI ADVANCED] Mobile WEB 개발하기
 
[WEB UI BASIC] JavaScript 1탄
[WEB UI BASIC] JavaScript 1탄[WEB UI BASIC] JavaScript 1탄
[WEB UI BASIC] JavaScript 1탄
 
Naver 웹툰 앱 사용성 조사
Naver 웹툰 앱 사용성 조사Naver 웹툰 앱 사용성 조사
Naver 웹툰 앱 사용성 조사
 
[WEB UI BASIC] CSS_2
[WEB UI BASIC] CSS_2[WEB UI BASIC] CSS_2
[WEB UI BASIC] CSS_2
 
[WEB UI BASIC] CSS_1
[WEB UI BASIC] CSS_1[WEB UI BASIC] CSS_1
[WEB UI BASIC] CSS_1
 
[WEB UI BASIC] WEB과 HTML
[WEB UI BASIC] WEB과 HTML[WEB UI BASIC] WEB과 HTML
[WEB UI BASIC] WEB과 HTML
 
Swimming Smith 포스트 모템
Swimming Smith 포스트 모템Swimming Smith 포스트 모템
Swimming Smith 포스트 모템
 
Swimming Smith 개발기
Swimming Smith 개발기Swimming Smith 개발기
Swimming Smith 개발기
 
XCOM_Post Mortem
XCOM_Post MortemXCOM_Post Mortem
XCOM_Post Mortem
 

C++ VECTOR, LIST, MAP

  • 2. V E C T O R VECTOR? • 임의 타입의 동적 배열 • 동일 타입 자료 집합인 템플릿 기반의 시퀀스 컨테이너 • 요소의 개수에 따라 자동으로 메모리 관리 • 자료 관리에 탁월한 성능
  • 3. V E C T O R VECTOR의 장점 • 요소들의 크기가 같고, 인접한 위치에 이웃하여 배치되므로 메모리를 적게 차지하며 임의 위치를 빠른 속도로 액세스 할 수 있다. • 최상위 레벨의 임의 접근 반복자를 제공하므로 STL의 모든 알고리즘을 사용할 수 있다.
  • 4. V E C T O R VECTOR의 단점 • 삽입, 삭제 시 요소의 인접 배치 원칙을 지키기 위해 요소를 이동시켜야 하는 번거로움이 있어 삽입, 삭제 속도가 느리다. • 삽입, 삭제가 빈번할 때는 벡터보다 리스트가 좋다.
  • 5. V E C T O R #include <vector> vector<Type> v1; //벡터 v1 생성 v1.push_back(a); //a라는 원소를 벡터 끝에 추가 v1.pop_back(); //벡터 끝 요소를 삭제 vi.insert(vi.begin()+3, b); //시작으로부터 세 번째에 b 삽입 vi.insert(vi.begin(), 10, c); //c를 10개 일괄 삽입 vi.erase(vi.begin()+3); //시작으로부터 세 번째 요소 삭제 vi.erase(vi.begin()+5, vi.begin()+8); //5~8 번째 요소들 삭제 VECTOR의 삽입과 삭제
  • 6. V E C T O R VECTOR 함수 #include <vector> vector<Type> v2; //벡터 v2 생성 v2.size(); //벡터 v2 크기 반환 v2.max_size(); //벡터가 관리할 수 있는 최대 요소 개소를 조사 v2.capacity(); //할당된 요소 개수를 조사 v2.resize(n); //벡터의 크기를 n으로 변경 v2.reserve(n); //미리 필요한 메모리를 할당해 놓는 함수 (자동할당보다 빠름) v2.clear(); //벡터 내 모든 요소 삭제 v2.empty(); //벡터가 비어 있는지 점검 (v2.size()==0 보다 빠름)
  • 7. L I S T LIST? • Doubly Linked List • 용도면에서는 vector와 동일, 인터페이스도 거의 유사 • 그러나 내부적으로는 vector와 판이하게 다른 구조 (vector는 요소를 직접 가리키는 포인터, list는 링크를 가리키는 포인터로 구성) • vector와
  • 8. L I S T LIST의 장점 • 위치와 요소 개수에 상관없이 삽입, 삭제가 가능해서 벡터보다 처리속도가 훨씬 빠르다. • 삽입, 삭제되는 노드와 앞 뒤 노드의 링크만 바뀌므로 나머지 노드들에 영향을 주지 않는다. (반복자가 무효와 되지 않는다.) • 처음부터 미리 크기를 결정할 필요가 없다.
  • 9. L I S T LIST의 단점 • 반복자(iterator)가 +n 연산을 지원하지 않는다. 따라서 순서값([]연산자)으로 접근할 수 없다. • 반드시 순회를 해야만 원하는 요소를 찾을 수 있다. • 링크 구조로 인해 메모리 소모량이 vector보다 많다. • 삽입, 삭제 시마다 노드를 할당, 해제하는 과정을 반복하므로 메모리 단편화가 심화된다.
  • 10. L I S T #include <list> list<Type> l1; //리스트 l1 생성 l1.push_front(a); //a라는 요소를 리스트 처음에 추가 l1.push_back(b); //b라는 요소를 리스트 처음에 추가 l1.insert(iterator, c); //iterator 앞에 c 삽입 l1.erase(iterator); //iterator 노드 삭제 ※ iterator는 it = li.begin(), li.end()를 기준으로 it++, it--로 이동 l1.remove(d); //값을 검색해 list 내 모든 d를 찾아서 삭제 LIST의 삽입과 삭제
  • 11. L I S T LIST 함수 #include <list> list<Type> l2; //리스트 l2 생성 l2.swap(l3); //l2와 l3 교환 l2.reverse(); //리스트 순서 역순으로 바꾸기 l2.merge(l3); //l2와 l3 병합 l2.splice(iterator, l4); //리스트 l4의 내용을 iterator 위치로 이동 l2.sort(); //리스트 내용을 퀵소트 l2.unique(); //리스트 연속된 중복 요소 제거
  • 12. M A P MAP? • 키와 값을 쌍으로 관리하는 연관 컨테이너 cf) SET은 키의 집합만 관리 • 키를 정렬 및 검색의 기준으로 사용 • 키가 맵의 내부적인 구성이나 관리 방법에는 영향을 미치지 않는다.
  • 13. MAP의 장점 • 검색 속도가 빠르다. 검색에는 최적의 컨테이너 cf) sparse matrix도 거대한 이차원 배열보다는 맵으로 표현하는 것이 정석이다. M A P
  • 14. MAP의 단점 • 키를 삽입할 때마다 정렬된 위치를 찾아서 삽입해야 하므로 대용량의 맵을 작성하는 데에는 시간이 많이 걸린다. • 여러 값이 짝지어진 멀티 맵의 경우 확정적인 결과를 리턴할 수 없다. • pair 클래스는 ==연산자를 제공하지 않기 때문에 pair 단위로 검색할 수 없다. • 첫 번째 들어가는 Key는 한 번 삽입되면 무결성을 해치지 않기 위해 수정할 수 없다. 삭제하고 다시 삽입해야 한다. M A P
  • 15. #include <map> map<Type1, Type2> m1; //맵 m1 생성 m1.insert(pair<Type1, Type2>(a, b)); //a를 키로 b를 값으로 삽입 m1[c] = d; //c를 키로 d를 값으로 삽입 m1.erase(m1.begin()); //첫 번째 쌍 삭제 m1.erase(a); //first 키를 직접 입력하여 삭제 MAP의 삽입과 삭제 M A P
  • 16. MAP 함수 #include <map> map<Type> m2; //맵 m2 생성 it = m2.find(a); //키 값 a로 iterator 검색(반환) cf) it->first는 첫 번째 타입의 값, it->second는 두 번째 타입의 값 m2.size(); //m2의 크기를 반환 m2.max_size(); //m2가 가지는 최대 크기를 반환 m2.swap(m3); //m2와 m3의 내용을 교체 m2.clear(); //m2 내용 전체 삭제 m2.empty(); //m2가 비었는지 확인 m2.lower_bound(b); //키 값 b보다 낮은 쌍의 iterator 반환 m2.upper_bound(c); //키 값 c보다 높은 쌍의 iterator 반환 m2.equal_range(d); //m2.first = m2.lower_bound(d) m2.second = m2.upper_bound(d) M A P