¿¬°ü ÄÁÅ×À̳Ê(Associative Container)´Â Ű¿Í °ªÃ³·³ °ü·ÃÀÌ ÀÖ´Â µ¥ÀÌÅ͸¦ ÇϳªÀÇ ½ÖÀ¸·Î ÀúÀåÇÏ´Â ÄÁÅ×À̳ÊÀÌ´Ù. ¸ÊÀº Ű¿Í °ªÀÇ ½ÖÀ» ÀúÀåÇÏ¸ç ¼ÂÀº ۸¸ ÀúÀåÇÏ°í °ªÀº ÀúÀåÇÏÁö ¾Ê´Â´Ù. µ¥ÀÌÅ͸¦ ÀúÀåÇÒ ¶§ ¾Æ¹« °÷¿¡³ª ÀúÀåÇÏÁö ¾Ê°í °Ë»öÀ» °í·ÁÇÏ¿© ÃÖ´ëÇÑ ºü¸¥ ¼Óµµ·Î ۸¦ ãÀ» ¼ö ÀÖ´Â À§Ä¡¿¡ ÀúÀåÇϹǷΠ°Ë»ö ¼Óµµ°¡ ±²ÀåÈ÷ ºü¸£´Ù.
¿¬°ü ÄÁÅ×À̳ʸ¦ ±¸ÇöÇÏ´Â ¹æ¹ý¿¡´Â ±ÕÇü ÀâÈù ÀÌÁø Æ®¸®¸¦ »ç¿ëÇÏ¿© Á¤·ÄµÈ »óÅ·ΠÀúÀåÇÏ´Â ¹æ¹ýÀÌ ÀÖ°í ÇØ½¬ Å×ÀÌºí¿¡ ÀúÀåÇÏ´Â ¹æ¹ýÀÌ ÀÖ´Ù. ÇØ½¬´Â ÇØ½¬ ÇÔ¼ö¿¡ ÀÇÇØ ÇÑ ¹ø¿¡ ÀڷḦ ãÀ» ¼ö ÀÖÀ¸¹Ç·Î °Ë»ö ¼Óµµ°¡ °ÅÀÇ ¼ø½Ä°£À̶ó´Â ÀåÁ¡ÀÌ ÀÖÁö¸¸ ¼º´ÉÀ» ³ôÀ̱â À§Çؼ´Â ÇØ½¬ Å×À̺íÀÌ ÃæºÐÈ÷ Ä¿¾ß ÇϹǷΠ¸Þ¸ð¸® ³¶ºñ°¡ Á¶±Ý ½ÉÇÑ ÆíÀÌ´Ù. ¶ÇÇÑ °Ë»öÀÌ ºü¸£±â´Â ÇÏÁö¸¸ µ¥ÀÌÅÍÀÇ ºÐÆ÷ Á¤µµ¿¡ µû¶ó °Ë»ö ¼Óµµ°¡ ¿î¿¡ Á¿ìµÇ´Â °æÇâÀÌ ÀÖ¾î ÃÖ¾ÇÀÇ »óȲ¿¡´Â ¼Óµµ°¡ ¶³¾îÁú ¼öµµ ÀÖ´Ù.
ÀÌ¿¡ ºñÇØ ÀÌÁø Æ®¸®¸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀº ¸Þ¸ð¸®ÀÇ ³¶ºñ°¡ ½ÉÇÏÁö ¾Ê°í µ¥ÀÌÅÍÀÇ Á¾·ù¿¡ »ó°ü¾øÀÌ Ç×»ó ÀÏÁ¤ÇÑ ¼º´ÉÀ» º¸ÀåÇϹǷΠÈξÀ ´õ ¾ÈÁ¤ÀûÀÌ´Ù. Ç¥ÁØ STLÀº ÀÌÁø Æ®¸®¿¡ Á¤·ÄÇÏ´Â ¹æ½ÄÀ¸·Î ±¸ÇöµÈ ¿¬°ü ÄÁÅ×À̳ʸ¸ Á¦°øÇÑ´Ù. ÇØ½¬ ¿¬°ü ÄÁÅ×À̳ʴ ºñ·Ï Ç¥ÁØÀº ¾Æ´ÏÁö¸¸ È®Àå ¶óÀ̺귯¸®ÀÇ ÇüÅ·ΠÁ¦°øµÇ´Â °ÍµéÀÌ ¸¹¾Æ ¿øÇÑ´Ù¸é ¾ðÁ¦µçÁö ±¸Çؼ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
Á¤·ÄµÈ ¿¬°ü ÄÁÅ×À̳ʴ ÀÌÁø Æ®¸®¿¡ µ¥ÀÌÅ͸¦ Á¤·ÄÇÏ¿© ÀúÀåÇÏ°í °Ë»öÇÒ ¶§´Â ÀÌÁø Æ®¸® °Ë»öÀ» »ç¿ëÇÑ´Ù. ½ÃÄö½º´Â ÁöÁ¤ÇÑ ÀÚ¸®¿¡ »ðÀÔµÇ¸ç »ðÀÔ½ÃÀÇ ¼ø¼°¡ ±×´ë·Î À¯ÁöµÇ´Âµ¥ ºñÇØ ¿¬°ü ÄÁÅ×À̳ʴ »ðÀÔ À§Ä¡¸¦ ÁöÁ¤ÇÒ ¼ö ¾øÀ¸¸ç ÄÁÅ×À̳ÊÀÇ ³»ºÎÀûÀÎ °ü¸® ±ÔÄ¢¿¡ µû¶ó ÀÚµ¿À¸·Î »ðÀÔ À§Ä¡°¡ °áÁ¤µÈ´Ù. ±×·¡¼ »ðÀÔ ¼Óµµ´Â ½ÃÄö½ºº¸´Ù ´À¸®Áö¸¸ °Ë»ö ¼Óµµ´Â ¿ùµîÈ÷ ºü¸£´Ù. »ðÀÔÇÒ ¶§ºÎÅÍ °Ë»öÇÏ±â ÆíÇÑ À§Ä¡¸¦ ¹Ì¸® ¼±Á¤ÇϹǷΠ°Ë»öÀÇ ºÎ´ãÀÌ »ðÀÔ ½ÃÁ¡À¸·Î ¿Å°ÜÁø ¼ÀÀÌ´Ù.
¿¬°ü ÄÁÅ×À̳ʴ ÀúÀå ´ë»ó°ú ŰÀÇ Áߺ¹ ¿©ºÎ¿¡ µû¶ó 4°¡Áö°¡ ÀÖ´Ù. ¼ÂÀº ۸¸ ÀúÀåÇÏ´Â ÄÁÅ×À̳ÊÀÌ¸ç ¸ÊÀº Ű¿Í °ªÀ» ½ÖÀ¸·Î °°ÀÌ ÀúÀåÇÑ´Ù. ¼Â°ú ¸ÊÀº ŰÀÇ Áߺ¹À» Çã¿ëÇÏÁö ¾Ê´Âµ¥ ¸ÖƼ¼Â, ¸ÖƼ¸ÊÀº °°Àº ۰¡ µÎ ¹ø ÀÌ»ó »ðÀ﵃ ¼ö ÀÖ´Ù.
ÀúÀå ´ë»ó |
Ű |
Ű + °ª |
Áߺ¹ ºÒÇã |
¼Â |
¸Ê |
Áߺ¹ Çã¿ë |
¸ÖƼ¼Â |
¸ÖƼ¸Ê |
¿¬°ü ÄÁÅ×À̳ÊÀÇ ¹Ýº¹ÀÚ´Â ¸ðµÎ ¾ç¹æÇ⠹ݺ¹ÀÚÀÌÀÌ´Ù. ÀÚ·áµéÀÌ Ç×»ó Á¤·ÄµÈ »óŸ¦ À¯ÁöÇϹǷΠ´Ù½Ã Á¤·ÄÇÒ Çʿ䰡 ¾øÀ¸¸ç °Ë»öÀÌ ¿ö³« ºü¸£±â ¶§¹®¿¡ À̺Р°Ë»öÀ» ÇÒ Çʿ䵵 ¾ø´Ù. ¾ðÁ¦µçÁö ¼ø¼´ë·Î ¼øÈ¸Çϸé Á¤·ÄµÈ °á°ú¸¦ ¾òÀ» ¼ö ÀÖ°í °Ë»öÀº ¿ø·¡ºÎÅÍ Ãʰí¼ÓÀ̹ǷΠ±»ÀÌ ÀÓÀÇ Á¢±Ù ¹Ýº¹ÀÚ°¡ ÇÊ¿äÇÏÁöµµ ¾Ê´Ù.
¿¬°ü ÄÁÅ×À̳ʸ¦ ¿¬±¸ÇØ º¸±â Àü¿¡ ¿¬°ü ÄÁÅ×À̳ʵéÀÌ Å°¿Í °ªÀÇ ½ÖÀ» Ç¥ÇöÇϱâ À§ÇØ »ç¿ëÇÏ´Â pair ±¸Á¶Ã¼¿¡ ´ëÇØ ¾Ë¾Æº¸ÀÚ. ¼Â°ú ¸Ê ÄÁÅ×À̳ʴ µÑ ÀÌ»óÀÇ °ªÀ» ¹¾î¼ °ü¸®Çϰųª ¸®ÅÏÇÒ ÀÏÀÌ ¸¹±â ¶§¹®¿¡ pair ±¸Á¶Ã¼¸¦ Á¾Á¾ »ç¿ëÇÑ´Ù. ÀÏÁ¾ÀÇ À¯Æ¿¸®Æ¼ Ŭ·¡½ºÀε¥ ¼±¾ð¹®µµ ¾ÆÁÖ °£´ÜÇÏ´Ù. ¹°·Ð ½ÇÁ¦ ¼±¾ð ÇüÅ´ ÄÄÆÄÀÏ·¯¿¡ µû¶ó ´Þ¶óÁø´Ù.
template<class T1, class T2>
struct pair {
typedef T1 first_type;
typedef T2 second_type;
T1 first;
T2 second;
pair() : first(T1()), second(T2()) {}
pair(const T1& v1, const T2& v2) : first(v1), second(v2) {}
};
Ŭ·¡½º ÅÛÇø´À¸·Î µÇ¾î Àִµ¥ T1, T2 ŸÀÔÀ» Àμö·Î Àü´Þ¹Þ¾Æ T1 ŸÀÔÀÇ first¿Í T2 ŸÀÔÀÇ second¸¦ ¸â¹ö º¯¼ö·Î Á¤ÀÇÇÑ´Ù. °¢ º¯¼öÀÇ Å¸ÀÔÀº first_type, second_typeÀ¸·Î Á¤ÀǵǾî ÀÖÀ¸¸ç »ý¼ºÀÚ´Â µÎ °ªÀ» ¹Þ¾Æ first¿Í second¸¦ ÃʱâÈÇÑ´Ù. µðÆúÆ® »ý¼ºÀÚµµ Á¤ÀǵǾî Àִµ¥ first, second¸¦ °¢ ŸÀÔÀÇ µðÆúÆ® »ý¼ºÀÚ·Î ÃʱâÈÇÑ´Ù. ±¸Á¶Ã¼·Î ¼±¾ðµÇ¾î ÀÖÀ¸¹Ç·Î ¸ðµç ¸â¹ö´Â °ø°³¿ëÀÌ¸ç ¿ÜºÎ¿¡¼µµ ÀÚÀ¯·Ó°Ô ÀÐ°í ¾µ ¼ö ÀÖ´Ù.
µÎ °³¾¿ ¦À» ÀÌ·é µ¥ÀÌÅ͸¦ ´Ù·é´Ù°Å³ª ÇѲ¨¹ø¿¡ µÎ °³ÀÇ °ªÀ» ¸®ÅÏÇÏ°í ½ÍÀ» ¶§ ÀÌ ±¸Á¶Ã¼¸¦ »ç¿ëÇÑ´Ù. ¾Ë´Ù½ÃÇÇ ÇÔ¼ö´Â ÇÑ ¹ø¿¡ ÇϳªÀÇ °ª¸¸ ¸®ÅÏÇÒ ¼ö ÀÖÀ¸¸ç ±»ÀÌ µÎ °³ÀÇ °ªÀ» ¸®ÅÏÇÏ°í ½Í´Ù¸é ÂüÁ¶ È£ÃâÀ» ¾µ ¼ö ÀÖÁö¸¸ ¹ø°Å·Ó´Ù. µÎ °ªÀÇ ½ÖÀ» Æ÷ÇÔÇÏ´Â ±¸Á¶Ã¼¸¦ Á¤ÀÇÇϸé ÀÌ ±¸Á¶Ã¼¸¦ ¸®ÅÏÇÔÀ¸·Î½á Æ÷ÇÔµÈ °ª µÎ °³¸¦ ¸®ÅÏÇÏ´Â °Í°ú °°´Ù. ±¸Á¶Ã¼´Â °ªÀ¸·Î º¹»ç, ´ëÀԵǹǷΠÇÔ¼öÀÇ ¸®ÅÏ Å¸ÀÔÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½ ¿¹Á¦ÀÇ GetPair ÇÔ¼ö°¡ ÀÌ ±¸Á¶Ã¼¸¦ ¸®ÅÏÇÑ´Ù.
¿¹ Á¦ : pair |
#include <iostream>
#include <string>
#include <utility>
using namespace std;
typedef pair<string,double> sdpair;
sdpair GetPair()
{
sdpair temp;
temp.first="¹®ÀÚ¿";
temp.second=1.234;
return temp;
// return make_pair("¹®ÀÚ¿",1.234);
}
void main()
{
sdpair SD;
SD=GetPair();
cout << SD.first << "," << SD.second << endl;
}
pair ±¸Á¶Ã¼¸¦ »ç¿ëÇÏ·Á¸é utility Çì´õ ÆÄÀÏÀ» Æ÷ÇÔÇØ¾ß Çϴµ¥ STLÀÇ ´Ù¸¥ Çì´õ ÆÄÀÏÀ» ÀÎŬ·çµåÇϸé utility Çì´õ ÆÄÀϵµ ÀÚµ¿À¸·Î ÀÎŬ·çµåµÈ´Ù. ¹®ÀÚ¿°ú ½Ç¼öÀÇ ½ÖÀ» Ç¥ÇöÇϴ ŸÀÔÀ» sdpair·Î Á¤ÀÇÇß´Ù. GetPair ÇÔ¼ö´Â ÀÌ·± ±¸Á¶Ã¼ Çϳª¸¦ ¸®ÅÏÇϴµ¥ sdpair¾È¿¡ ¹®ÀÚ¿°ú ½Ç¼ö°¡ °°ÀÌ µé¾î ÀÖÀ¸¹Ç·Î °á±¹ µÎ °³ÀÇ °ªÀ» ¸®ÅÏÇÏ´Â °Í°ú °°´Ù.
GetPair¿¡¼ sdpair ŸÀÔÀÇ Àӽà º¯¼ö temp¸¦ ¼±¾ðÇϰí first¿¡ ¹®ÀÚ¿À», second¿¡ ½Ç¼ö Çϳª¸¦ ³Ö¾î ¸®ÅÏÇß´Ù. ±¸Á¶Ã¼´Â °ªÀ¸·Î ¸®ÅϵǹǷΠÀӽà º¯¼ö¸¦ ¸®ÅÏÇØµµ »ó°ü¾ø´Ù. ¾îÂ÷ÇÇ È£ÃâÇÏ´Â ÂÊ¿¡¼ ÀÌ °ªÀ» °°Àº ŸÀÔÀÇ ±¸Á¶Ã¼·Î ´ëÀÔ¹ÞÀ» °ÍÀÌ´Ù. Àӽà º¯¼ö¸¦ ¼±¾ðÇÏ´Â °ÍÀÌ ±ÍÂú´Ù¸é make_pair ÅÛÇø´ ÇÔ¼ö·Î first¿Í second¿¡ ´ëÀ﵃ °ªÀ» Àü´ÞÇÏ¿© ±× °á°ú¸¦ °ð¹Ù·Î ¸®ÅÏÇÒ ¼öµµ ÀÖ´Ù. GetPair´Â ´ÙÀ½°ú °°Àº ¸ð¾çÀ» °¡Áö´Â sdpair ±¸Á¶Ã¼¸¦ ¸®ÅÏÇÑ´Ù.
main¿¡¼´Â GetPair°¡ ¸®ÅÏÇÏ´Â °ªÀ» SD Áö¿ªº¯¼ö¿¡ ´ëÀÔ¹Þ¾Ò´Ù. SD ¾È¿¡´Â ¹®ÀÚ¿ Çϳª¿Í ½Ç¼ö Çϳª°¡ µé¾î ÀÖÀ» °ÍÀÌ´Ù. °ú¿¬ µÎ °³ÀÇ °ªÀÌ Àß µé¾î°¡ ÀÖ³ª È®ÀÎÇØ º¸±â À§ÇØ SDÀÇ first, second ¸â¹ö¸¦ ȸéÀ¸·Î Ãâ·ÂÇØ º¸¾Æ¶ó. pair´Â µÎ °ªÀ» ÇѲ¨¹ø¿¡ °ü¸®ÇÒ ¼ö ÀÖ´Ù´Â ¸é¿¡¼ Æí¸®Çѵ¥ STLÀÌ ¾Æ´Ï´õ¶óµµ °ªÀÇ ¹À½À» »ç¿ëÇÒ ÀÏÀÌ ÀÖ´Ù¸é »ç¿ëÇØ º½Á÷ÇÑ ±¸Á¶Ã¼ÀÌ´Ù.