예제 코드
#include <iostream>
#include <string>
#include <map>
using namespace std;
struct Item
{
string name; // 이름
unsigned short kind; // 종류
int price; // 구입 가격
int skillCode; // 스킬 코드
};
int main()
{
map<string, Item, greater<string>> items;
Item item1 = { "긴칼", 1, 200, 0 };
Item item2 = { "성스러운 방패", 2, 1000, 4 };
Item item3 = { "해머", 1, 500, 0 };
// Items에 아이템 추가
items.insert({ item2.name, item2 });
items.insert({ item1.name, item1 });
// Items가 비어 있지않다면
if (items.empty() == false)
{
cout << "저장된 아이템 개수: " << items.size() << endl;
}
for (auto iter = items.begin(); iter != items.end(); ++iter)
{
cout << "이름: " << iter->first << ", 가격: " << iter->second.price << endl;
}
auto search = items.find("긴칼");
if (search == items.end())
{
cout << "아이템'긴칼'이 없습니다." << endl;
}
cout << endl;
cout << "올림차순으로 정렬되어있는 map(Key 자료형으로 string 사용)" << endl;
// initialize list를 사용해 자료 추가.
map<string, Item, less<string>> items2 =
{
{ item2.name, item2 },
{ item1.name, item1 }
};
// operator[]를 사용하여 저장
items2[item3.name] = item3;
for (auto iter2 = items2.begin(); iter2 != items2.end(); ++iter2)
{
cout << "이름: " << iter2->first << ", 가격: " << iter2->second.price << endl;
}
cout << endl;
cout << "해머의 가격은 얼마? ";
search = items2.find("해머");
if (search != items2.end())
{
cout << search->second.price << endl;
}
else
{
cout << "해머는 없습니다" << endl;
}
cout << endl;
// 아이템 "긴칼"을 삭제한다.
search = items2.find("긴칼");
if (search != items2.end())
{
items2.erase(search);
}
cout << "Items2에 있는 아이템 개수: " << items2.size() << endl;
cin.get();
}
앞선 예제에서는 아이템 이름을 key 값으로 사용했다. 이번에는 아이템 가격을 key 값으로 사용해 아이템을 저장하고 내림차순으로 출력해보자.