예제 코드

#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 값으로 사용해 아이템을 저장하고 내림차순으로 출력해보자.