[C++ 언어-기초실습-19] map 사용하기?

in #kr-dev2 years ago (edited)

[C++ 언어-기초실습-19] map 사용하기?



c++ 에서는 map 라이브러리 함수들을 제공합니다. map이란 키와 값으로 한쌍으로 구상되어 있는데 느낌상으로는 배열과 비슷한 형태로 이해하시면 됩니다. 배열에서는 a[i]라고 정의하면 index인 i번째에 어떤 특정한 값을 저장한 반면 맵에서는 m[i]라고 정의하면 i라는 키가가 가리키는 곳에 특정한 값을 저장하는 형태라고 생각하시면 됩니다. map 라이브러리 파일을 보면 다양한 함수들을 제공하는데 그 중 간단한 map의 느낌만 실습하도록 하겠습니다.

1. map 사용


map 클래스를 사용하기 위해서는 아래와 같이 선언해주셔야 합니다.

#include <map>

객체선언


map<키타입,값타입> 변수명;

예)

map<int, string> m;

입력


map<int,string> m;

m.insert(map<int,string>::value_type(1,"steemIt1"));
m.insert(pair<int,string>(2,"steemIt2"));
m[3]="steemIt3";

입력은 위 처럼 3가지 형태로 입력을 할 수 있습니다. 입력 스타일은 선택사항이고요. 그냥 이런식으로 입력을 할 수 있구나 정도로 이해하시면 됩니다.

출력


map<int,string> m;
map<int,string>::iterator i;

cout<<"m[1] = "<<m[1]<<endl;

for(i=m.begin();i!=m.end();i++){
    cout<<"["<<i->first<<"] = "<<i->second<<endl;
}

위 코딩을 보시면 배열처럼 출력하면 됩니다. 참고로 i라는 변수명을 쓰긴 했는데 꼭 i에 대한 변수 선언을 위와 같이 해주셔야 합니다. 그냥 i변수니깐 for문이니 int형이지 하고 습관적으로 선언하지 마시고요. 시작값을 기준으로 끝값을 비교 체크해서 출력을 하면 됩니다. first은 키가 되겠고 second은 값이 되겠죠.

2. 실습


이제는 위 내용을 실제 코딩을 해서 정상적으로 결과가 나오는지 볼까요.

[전체소스]

#include <iostream>
#include <map>
#include <string.h>

using namespace std;
int main(int argc, char** argv) {
    
    map<int,string> m;
    map<int,string>::iterator i;
    
    m.insert(map<int,string>::value_type(1,"steemIt1"));
    m.insert(map<int,string>::value_type(2,"steemIt2"));    
    
    m.insert(pair<int,string>(3,"steemIt3"));
    
    m[4]="steemIt4";
    m[5]="steemIt5";
    
    for(i=m.begin();i!=m.end();i++){
        cout<<"["<<i->first<<"] = "<<i->second<<endl;
    }
    
    cout<<"m[5] = "<<m[5]<<endl;
    
    
    return 0;
}

[결과]
a1.jpg

마무리


간단히 map 클래스를 이용하여 입출력 테스트를 해보았네요. 이외에도 다양함 함수들이 제공되는데 구글 키워드로 "map.h github"로 검색하시면 해당 내부 코딩을 보실 수 있을 거에요. map 클래스를 잘 사용하지 않는 거라서 이 부분은 기초적인 것만 알고 있네요. 더 깊게 다양한 함수를 사용하고 싶다면 한번 살펴보시는 것을 추천 드려요.


Sponsored ( Powered by dclick )

dclick-imagead

Sort:  

오늘도 새로운 지식을 접했네요! 감사해요~

감사합니다.

Thank you for your continued support towards JJM. For each 1000 JJM you are holding, you can get an additional 1% of upvote. 10,000JJM would give you a 11% daily voting from the 700K SP virus707 account.

Coin Marketplace

STEEM 0.74
TRX 0.09
JST 0.072
BTC 54541.54
ETH 4072.79
BNB 591.56
SBD 6.99