[C++] STL map 사용 법


[C++] map 사용법


이번 포스팅에서는 map 클래스가 무엇이고 어떻게 사용하는지에 대해서 알아보도록 하겠습니다.

 

우선 map이란 STL(Standard Template Library)이 제공하는 자료구조 중 하나라고 생각을 하시면 되겠습니다.

 

map 클래스의 원형을 보시게 되면 아래와 같습니다.


1

2

3

4

5

template <class Key,   

    class Type,   

    class Traits = less<Key>,   

    class Allocator=allocator<pair <const Key, Type>>>  

class map;  

Colored by Color Scripter

cs

 

매개변수

Key – map에 저장되는 키 데이터 형식을 나타냅니다.

Type – map에 저장되는 요소 데이터 형식을 나타냅니다.

Traits함수 개체를 제공하는 형식은 map 내에서의 상대적인 순서를 결정하는 정렬 키로 두 요소 값을 비교할 수 있습니다.

Allocator – map의 메모리 할당 및 할당 취소에 대한 세부 정보를 캡슐화하는 저장된 할당자 개체를 나타내는 형식입니다.






 

Map 클래스 특징


- 연결된 키 값을 기반으로 요소 값을 효율적으로 검색하는 다양한 크기의 컨테이너 입니다.


- 이는 해당 요소에 액세스할 수 있는 양방향 반복기를 제공하기 때문에 되돌릴 수 있습니다.


- 요소가 지정된 비교 함수에 따른 키 값으로 정렬되므로 정렬되어 있습니다.


- 키는 고유합니다. (중복된 키 사용 불가)


- 요소의 데이터 값은 키 값과 구별되기 때문에 쌍 연관 컨테이너 입니다.

 






그럼 지금부터 실제 map을 어떻게 사용하는지 코드로 직접 확인해보겠습니다.

 

참고로 map 의 원소는 pair 객체로 저장되며, pair 객체의 first 멤버 변수는 key, second 변수는 값(value)입니다.

 

원소를 저장하는 insert() 멤버 함수는 pair 객체를 인자로 받아 map의 원소인 keyvalue의 쌍을 메모리에 저장합니다.

 

우선 아래와 같이 C++ 콘솔 프로젝트를 생성하여 주시기 바랍니다. 그리고 main함수안에 아래와 같이 코드를 작성 후, 출력 결과를 보시면서 천천히 map의 사용법을 익히시면 되겠습니다.


 





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

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

// tes.cpp : 콘솔 응용 프로그램에 대한 진입점을 정의합니다.

//

 

#include "stdafx.h"

#include <iostream>

 

#include <map>

 

using namespace std;

 

int _tmain(int argc, _TCHAR* argv[])

{

    map<intint> t_map; //map 변수 선언

 

    t_map.insert(pair<intint> (1100));

    t_map.insert(pair<intint> (3100));

 

    t_map[20= 200;

    t_map[30= 300;

    t_map[40= 400;

 

    //iterator 반복자 사용법

    map<intint>::iterator iter;

    for(iter = t_map.begin(); iter != t_map.end(); ++iter)

    {

        //현재 t_map  메모리 상에 보관하고 있는 정보들을 출력

        cout<<"key : "<<(*iter).first<<" , "<<"value : "<<(*iter).second<<endl;

    }

 

 

 

    //iterator 반복자를 이용하여 특정 데이터 찾아서 출력하는 방법

    map<intint>::iterator iter2 = t_map.find(3);

    if(iter2 == t_map.end()) //not found

    {

        cout<<"해당  값은 없는 키값입니다."<<endl;

    }

    else //found

    {

        cout<<" 값이 3 value = "<<(*iter2).second<<endl;

    }

    

 

 

 

    //map 중복 예외처리 방법

    pair<map<int,int>::iteratorbool> pir;

 

    pir = t_map.insert(pair<intint>(1030));

 

    if(pir.second == true)

    {

        cout<<"중복된  값이 없습니다저장 성공!!!"<<endl;

    }

    else

    {

        cout<<"현재 중복된  값이 있습니다저장 실패!!!"<<endl;

    }

 

 

    return 0;

}

 

 

Colored by Color Scripter

cs

 


 

출력 결과 화면



 

이상으로 C++에서 map 사용법에 대해 간단히 알아보았습니다.


감사합니다.^^


728x90

이 글을 공유하기

댓글

Designed by JB FACTORY