본문 바로가기
  • 실행력이 모든걸 결정한다
유용한 정보, 링크

매우 편한 데이터관리 C++ Map 사용법!

by 김코더 김주역 2020. 9. 25.
반응형

Map은 key와 value쌍으로 이루어져 있는 자료구조이며, key값을 주면 key에 해당하는 value값을 반환하게 된다.

map은 <map> 헤더파일에 있다.

이제 가장 기본적인 기능들을 예제 위주로 설명할 것이다.

먼저 iterator은 반복자라는 뜻이고, 데이터 집합이 주소값으로 저장되어 있는 객체이다.

 

1. 삽입

map[key]=value;

map.insert(make_pair(key,value));

위 2가지 방법으로 삽입 가능하다.

key값은 정수가 아닌 문자열도 가능하다는 것이 map구조에서 가장 눈에 띄는 특징이다.

map은 기본적으로 key값 기준 오름차순으로 정렬 된다. 

 

2. 삭제

map.erase(key);

주어진 key와 그 key의 value쌍을 삭제한다.

 

3. 조회

map[key];

주어진 key의 value값을 출력한다.

 

4. 존재 여부 확인

map.count(key);

주어진 key의 요소 개수를 반환한다. 그런데 key는 고유값이므로 count함수는 0,1만 반환 가능하다.

 

5. 값 변경

map[key]+=a;

map[key]=value;

map[key]는 value이므로, 일반적으로 변수를 변경할 때처럼 다루면 된다.

 

#include <iostream>
#include <string>
#include <map>
using namespace std;

map<string,int> kimcoder;
map<string,int>::iterator iter;

int main(){
    //insert
    cout << "Insert" << "\n";
    kimcoder["Korean"]=79;
    kimcoder["Math"]=84;
    kimcoder.insert(make_pair(("English"),81));
    kimcoder.insert(make_pair(("Science"),83));
    kimcoder.insert(make_pair(("Programming"),97));
	  
    for(iter=kimcoder.begin();iter!=kimcoder.end();iter++){
        cout << iter->first << " : " << iter->second <<"점"<<"\n";
    }
    cout << "\n";
    
    //erase
    cout << "Erase" << "\n";
    kimcoder.erase("Korean");
    
    for(iter=kimcoder.begin();iter!=kimcoder.end();iter++){
        cout << iter->first << " : " << iter->second <<"점"<<"\n";
    }
    cout << "\n";
    
    //check
    cout << "Check" << "\n";
    cout << kimcoder["Programming"] << "\n";
    cout << "\n";
    
    //count
    cout << "Count" << "\n";
    if(kimcoder.count("English")>0){
        cout << "exist!" << "\n"; 
	}
    else cout << "not here!" << "\n";
	
    if(kimcoder.count("Circuit")>0){
        cout << "exist!" << "\n"; 
    }
    else cout << "not here!" << "\n";
    cout << "\n";
    
    //change value
    cout << "Change value" << "\n";
    kimcoder["Science"]+=10;
    kimcoder["Programming"]=100;
	
    for(iter=kimcoder.begin();iter!=kimcoder.end();iter++){
        cout << iter->first << " : " << iter->second <<"점"<<"\n";
    }
}

반응형

댓글