[C++ 언어-기초실습-19] map 사용하기?
[C++ 언어-기초실습-19] map 사용하기?
- 다운 사이트 : https://sourceforge.net/projects/orwelldevcpp/
- 웹컴파일러 : https://www.tutorialspoint.com/compile_c_online.php
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;
}
[결과]
마무리
간단히 map 클래스를 이용하여 입출력 테스트를 해보았네요. 이외에도 다양함 함수들이 제공되는데 구글 키워드로 "map.h github"로 검색하시면 해당 내부 코딩을 보실 수 있을 거에요. map 클래스를 잘 사용하지 않는 거라서 이 부분은 기초적인 것만 알고 있네요. 더 깊게 다양한 함수를 사용하고 싶다면 한번 살펴보시는 것을 추천 드려요.
오늘도 새로운 지식을 접했네요! 감사해요~
감사합니다.
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.
Thank you