STL - map - sample(2)

2017. 1. 4. 22:57IT-개발/C및C++

반응형



#include <map>

#include <string>

#include <iostream>

using namespace std;

struct Item

{

char Name[32]; // 이름

char Kind; // 종류

int BuyMoney; // 구입 가격

int SkillCd; // 스킬 코드

};


int main()

{

map< char*, Item > Items;

map< char*, Item >::iterator IterPos;

typedef pair< char*, Item > ItemPair;

Item Item1;

strncpy( Item1.Name, "긴칼", 32 );

Item1.Kind = 1; Item1.BuyMoney = 200; Item1.SkillCd = 0;

Item Item2;

strncpy( Item2.Name, "성스러운 방패", 32 );

Item2.Kind = 2; Item2.BuyMoney = 1000; Item2.SkillCd = 4;

Item Item3;

strncpy( Item3.Name, "해머", 32 );

Item3.Kind = 1; Item3.BuyMoney = 500; Item3.SkillCd = 0;


// Items에 아이템 추가

Items.insert( map< char*, Item >::value_type(Item2.Name, Item2) );

Items.insert( ItemPair(Item1.Name, Item1) );


// Items가 비어 있지않다면

if( false == Items.empty() )

{

cout << "저장된 아이템 개수- " << Items.size() << endl;

}


for( IterPos = Items.begin(); IterPos != Items.end(); ++IterPos )

{

cout << "이름: " << IterPos->first << ", 가격: " << IterPos->second.BuyMoney << endl;

}

IterPos = Items.find("긴칼");

if( IterPos == Items.end() ) {

cout << "아이템'긴칼'이 없습니다." << endl;

}

cout << endl;

cout << "올림차순으로 정렬되어있는 map(Key 자료형으로string 사용)" << endl;


map< string, Item, less<string> > Items2;

map< string, Item, less<string> >::iterator IterPos2;

Items2.insert( map< string, Item >::value_type(Item2.Name, Item2) );

Items2.insert( ItemPair(Item1.Name, Item1) );


// operator[]를 사용하여 저장

Items2[Item3.Name] = Item3;

for( IterPos2 = Items2.begin(); IterPos2 != Items2.end(); ++IterPos2 )

{

cout << "이름: " << IterPos2->first << ", 가격: " << IterPos2->second.BuyMoney << endl;

}

cout << endl;

cout << "해머의 가격은 얼마? ";

IterPos2 = Items2.find("해머");

if( IterPos2 != Items2.end() ) {

cout << IterPos2->second.BuyMoney << endl;

}

else {

cout << "해머는 없습니다" << endl;

}

cout << endl;


// 아이템 "긴칼"을 삭제한다.

IterPos2 = Items2.find("긴칼");

if( IterPos2 != Items2.end() ) {

Items2.erase( IterPos2 );

}

cout << "Items2에 있는 아이템 개수: " << Items2.size() << endl;

return 0;

}





'IT-개발 > C및C++' 카테고리의 다른 글

STL - Set - sample(2)  (0) 2017.01.04
STL - Set - sample(1)  (0) 2017.01.04
STL - map - sample(1)  (0) 2017.01.04
STL - hash_map - sample(2)  (0) 2017.01.04
STL - hash_map - sample(1)  (0) 2017.01.04