41-1-³ª.¼Â

µÎ Á¾·ùÀÇ ¿¬°ü ÄÁÅ×ÀÌ³Ê Áß »ó´ëÀûÀ¸·Î °£´ÜÇÑ ¼ÂºÎÅÍ ¾Ë¾Æº¸ÀÚ. ¼Â(Set)Àº ¿µ¾î ´Ü¾î ¶æ ±×´ë·Î ÁýÇÕÀ» ÀǹÌÇϴµ¥ µ¿ÀÏÇÑ Å¸ÀÔÀÇ µ¥ÀÌÅ͸¦ ¸ð¾Æ ³õÀº °ÍÀÌ´Ù. ÀúÀåÇÏ´Â µ¥ÀÌÅÍ ÀÚü°¡ Å°·Î »ç¿ëµÇ¸ç °ªÀº ÀúÀåµÇÁö ¾Ê´Â´Ù. µ¿ÀÏ Å¸ÀÔÀÇ ÁýÇÕÀ̶ó´Â ¸é¿¡¼­´Â º¤ÅÍ¿Í °°Áö¸¸ ¾Æ¹« À§Ä¡¿¡³ª »ðÀԵǴ °ÍÀÌ ¾Æ´Ï¶ó Á¤·ÄµÈ À§Ä¡¿¡ »ðÀԵȴٴ Á¡ÀÌ ´Ù¸£¸ç ±×·¡¼­ °Ë»ö ¼Óµµ°¡ ¾ÆÁÖ ºü¸£´Ù.

¼ÂÀº Å°ÀÇ Áߺ¹À» Çã¿ëÇÏÁö ¾ÊÀ¸¹Ç·Î °°Àº Å°¸¦ µÎ ¹ø ³ÖÀ» ¼ö ¾ø´Â ¹Ý¸é ¸ÖƼ¼ÂÀº Å°ÀÇ Áߺ¹À» Çã¿ëÇϹǷΠ°°Àº Å°¸¦ ¿©·¯ ¹ø ³ÖÀ» ¼ö ÀÖ´Ù. Áߺ¹À» Çã¿ëÇÏ´Â ÁýÇÕÀΰ¡ ¾Æ´Ñ°¡¿¡ µû¶ó µÎ ÄÁÅ×ÀÌ³Ê Áß Çϳª¸¦ ¼±ÅÃÇؼ­ »ç¿ëÇÏ¸é µÈ´Ù. ¿¹¸¦ µé¾î ÁֹΠµî·Ï ¹øÈ£ÀÇ ÁýÇÕÀ̶ó¸é Áߺ¹À» Çã¿ëÇؼ­´Â ¾ÈµÇ¸ç »ç¶÷ À̸§ÀÇ ÁýÇÕÀ̶ó¸é Áߺ¹ÀÌ ¹ß»ýÇÒ ¼öµµ ÀÖ´Ù.

¼Â Ŭ·¡½º

STLÀÇ ´Ù¸¥ ÄÁÅ×À̳ʵé°ú ¸¶Âù°¡Áö·Î ¼Âµµ ÅÛÇø´À¸·Î Á¤ÀǵǾî ÀÖ´Ù. ¼ÂÀÇ ÅÛÇø´ Á¤ÀÇ´Â ´ÙÀ½°ú °°´Ù.

 

template<class Key, class BinPred = less<Key>, class A = allocator<Key> >

class set { ... }

 

¼¼ °³ÀÇ ÅÛÇø´ Àμö°¡ Àü´ÞµÇ´Âµ¥ Key´Â ¼Â¿¡ ÀúÀåµÇ´Â Å°ÀÇ Å¸ÀÔÀÌ´Ù. ±âº» ŸÀÔÀº ¹°·ÐÀÌ°í »ç¿ëÀÚ Á¤ÀÇ Å¸ÀÔ¿¡ ´ëÇؼ­µµ ¼ÂÀ» ¸¸µé ¼ö ÀÖ´Ù. BinPred´Â Å°¸¦ Á¤·ÄÇϱâ À§ÇÑ ºñ±³ ÇÔ¼ö °´Ã¼Àε¥ µðÆúÆ®´Â less·Î µÇ¾î ÀÖ¾î ÀÛÀº °ªÀÌ ¾ÕÂÊ¿¡ ¹èÄ¡µÇ´Â ¿À¸§Â÷¼øÀ¸·Î Á¤·ÄµÈ´Ù. ´Ù¸¥ ÇÔ¼ö °´Ã¼¸¦ ÁöÁ¤Çϸé Á¤·Ä ¹æ¹ýÀ» º¯°æÇÒ ¼öµµ ÀÖÁö¸¸ ¾îÂ÷ÇÇ Á¤·Ä ÀÚü°¡ ¸ñÀûÀÌ ¾Æ´Ï¶ó ºü¸¥ °Ë»öÀÌ ¸ñÀûÀ̹ǷΠ¹Ì¸¸ ºñ±³¸¸À¸·Îµµ ÃæºÐÇÏ´Ù. ¸¶Áö¸· Àμö A´Â ÇÒ´ç±âÀε¥ ¿ª½Ã µðÆúÆ®°¡ ÀÖÀ¸¹Ç·Î »ý·« °¡´ÉÇÏ´Ù.

ºñ±³ °´Ã¼¿Í ÇÒ´ç±â´Â ´ë°³ÀÇ °æ¿ì »ý·«ÇϹǷΠ¼Â ŸÀÔÀ» ¸¸µé±â À§ÇØ ²À ÇÊ¿äÇÑ °ÍÀº Å°ÀÇ Å¸ÀÔ¹Û¿¡ ¾ø´Â ¼ÀÀÌ´Ù. set<int>´Â Á¤¼öÇüÀÇ ÁýÇÕÀ̸ç set<Time>Àº Time °´Ã¼ÀÇ ÁýÇÕÀÌ´Ù. ¿¬°ü ÄÁÅ×À̳ʵµ ½ÃÄö½º¿Í ¸¶Âù°¡Áö·Î ³»ºÎ¿¡¼­ »ç¿ëÇϴ ŸÀÔÀ» Á¤ÀÇÇϴµ¥ value_type, iterator, const_iterator, reference µîÀÇ °°Àº À̸§À» »ç¿ëÇÑ´Ù. ÀÌ ¿Ü¿¡ ´ÙÀ½ ¼¼ °³ÀÇ Å¸ÀÔÀ» Ãß°¡·Î Á¤ÀÇÇÑ´Ù.

 

ŸÀÔ

¼³¸í

key_type

Å°ÀÇ Å¸ÀÔÀÌ´Ù. ¼ÂÀº Å°°¡ °ð °ªÀ̹ǷΠvalue_type°ú µ¿ÀÏÇÏ¸ç ¸ÊÀº Å°¿Í °ªÀÇ pair ŸÀÔÀ¸·Î Á¤ÀǵȴÙ.

key_compare

Å°¸¦ ºñ±³ÇÏ´Â ÇÔ¼ö °´Ã¼ ŸÀÔÀÌ´Ù. µðÆúÆ®´Â less·Î µÇ¾î ÀÖ´Ù.

value_compare

°ªÀ» ºñ±³ÇÏ´Â ÇÔ¼ö °´Ã¼ ŸÀÔÀÌ´Ù. ¼Â¿¡¼­´Â key_compare¿Í µ¿ÀÏÇÑ Å¸ÀÔÀ¸·Î Á¤ÀÇµÇ¸ç ¸Ê¿¡¼­´Â pair¸¦ ºñ±³ÇÑ´Ù.

 

ÀÌÁß value_compare´Â »ç½Ç»ó ¼Â¿¡´Â ²À ÇÊ¿äÄ¡ ¾ÊÀº ŸÀÔÀε¥ ¼ÂÀº Å°¸¸ ÀúÀåµÇ°í º°µµÀÇ °ªÀÌ ¾øÀ¸¹Ç·Î key_compare ´ë½Å value_comapreµµ ¾µ ¼ö ÀÖµµ·Ï µ¿ÀǾ Á¤ÀÇÇØ ³õ¾ÒÀ» »ÓÀÌ´Ù. »ý¼ºÀÚ´Â ¼¼ °³°¡ Á¤ÀǵǾî ÀÖ´Ù.

 

explicit set(const BinPred& comp = BinPred());

set(const set& x);

set(InIt first, InIt last, const BinPred& comp = BinPred());

 

ù ¹ø° »ý¼ºÀÚ°¡ µðÆúÆ® »ý¼ºÀÚÀε¥ ¿ä¼Ò¸¦ °¡ÁöÁö ¾Ê´Â ºó ¼ÂÀ» ¸¸µç´Ù. µÎ ¹ø° »ý¼ºÀÚ´Â º¹»ç »ý¼ºÀÚÀÌ¸ç ¼¼ ¹ø° »ý¼ºÀÚ´Â ¹Ýº¹ÀÚ ±¸°£ÀÇ ¿ä¼Òµé·Î ¼ÂÀ» »ý¼ºÇÑ´Ù. À̶§ ¹Ýº¹ÀÚ ±¸°£Àº ÀÔ·Â ¹Ýº¹ÀÚÀ̱⸸ ÇÏ¸é µÇ¹Ç·Î ´Ù¸¥ ÄÁÅ×À̳ÊÀÇ ±¸°£À» °¡Á®¿Ã ¼öµµ ÀÖ´Ù. ¸¸¾à Áߺ¹µÈ Å°°¡ ÀÖ´Ù¸é À̶§´Â ÇÑ ¹ø¸¸ »ðÀÔµÇ¸ç ¸ÖƼ¼ÂÀ̶ó¸é ÀüºÎ »ðÀ﵃ °ÍÀÌ´Ù. Á¶°ÇÀÚ¿Í ÇÒ´ç±â´Â ¿øÇÒ °æ¿ì º¯°æÇÒ ¼ö ÀÖÁö¸¸ ´ë°³ÀÇ °æ¿ì µðÆúÆ®¸¸ Çصµ ¹«³­ÇÏ´Ù.

¸ÖƼ ¼ÂÀº Å°ÀÇ Áߺ¹À» Çã¿ëÇÑ´Ù´Â °Í¸¸ »©°í´Â ¼Â°ú µ¿ÀÏÇÏ´Ù. Ŭ·¡½º À̸§Àº multisetÀ̸ç Ŭ·¡½º Á¤Àǹ®À̳ª »ý¼ºÀÚµµ ¼Â°ú ¿ÏÀüÈ÷ µ¿ÀÏÇÏ´Ù. Å°ÀÇ Áߺ¹ÀÌ Çã¿ëµÇ¹Ç·Î Å°¸¦ »ðÀÔ, »èÁ¦ÇÏ´Â ±ÔÄ¢ÀÌ Á¶±Ý ´Ù¸¥µ¥ Â÷ÀÌÁ¡Àº °³º° ÇÔ¼ö¿¡¼­ ¼³¸íÇϱâ·Î ÇÑ´Ù.

»ðÀÔ, »èÁ¦

¼Â¿¡ Å°¸¦ »ðÀÔÇÒ ¶§´Â insert ¸â¹ö ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù. ¼¼ °¡Áö ¹öÀüÀÌ Á¦°øµÈ´Ù.

 

pair<iterator, bool> insert(const value_type& val);

iterator insert(iterator it, const value_type& val);

void insert((iterator first, iterator last);

 

ù ¹ø° ¹öÀüÀº °ª Çϳª¸¦ ¼Â¿¡ »ðÀÔÇ쵂 »ðÀÔ ´ë»óÀÌ µÇ´Â °ª val¸¸ Àμö·Î Àü´Þ¹ÞÀ¸¸ç »ðÀÔ À§Ä¡´Â º°µµ·Î Àü´Þ¹ÞÁö ¾Ê´Â´Ù. ¼ÂÀº °ªÀÌ ÁÖ¾îÁö¸é »ðÀÔ À§Ä¡°¡ Á¤·Ä ±ÔÄ¢¿¡ ÀÇÇØ ÀÚµ¿ÀûÀ¸·Î °áÁ¤µÇ¹Ç·Î º°µµÀÇ À§Ä¡¸¦ ÁöÁ¤ÇÒ ÇÊ¿ä°¡ ¾ø´Ù. »ðÀÔÇÑ °á°ú·Î »ðÀÔÇÑ À§Ä¡ÀÇ ¹Ýº¹ÀÚ¿Í »ðÀÔ ¼º°ø ¿©ºÎ µÎ °³°¡ pair·Î ¹­¿© ¸®ÅϵȴÙ. ¼ÂÀº Áߺ¹À» Çã¿ëÇÏÁö ¾ÊÀ¸¹Ç·Î val°¡ ÀÌ¹Ì Á¸ÀçÇÒ °æ¿ì »ðÀÔ¿¡ ½ÇÆÐÇÒ ¼öµµ ÀÖ´Ù.

Å° Çϳª¸¦ »ðÀÔÇÏ¸é »ðÀÔµÈ À§Ä¡¿Í ¼º°ø ¿©ºÎ¸¦ µ¿½Ã¿¡ ¸®ÅÏÇØ¾ß ÇÏ¸ç ±×·¡¼­ pair ±¸Á¶Ã¼°¡ ¸®ÅϵȴÙ. ¹Ýº¹ÀÚ¿¡ ½ÇÆи¦ ¶æÇϴ ƯÀÌ°ªÀÌ ¾ø±â ¶§¹®¿¡ ¹Ýº¹ÀÚ¿Í boolÀÇ Â¦À» ¸®ÅÏÇÒ ¼ö¹Û¿¡ ¾ø´Ù. insert¸¦ È£ÃâÇÑ ÈÄ ¼º°ø ¿©ºÎ¸¦ ¾Ë°í ½Í´Ù¸é ¸®ÅÏµÈ pairÀÇ second ¸â¹ö¸¦ ÀÐ¾î º¸°í ÀÌ °ªÀÌ trueÀ̸é first ¸â¹ö¿¡¼­ »ðÀÔµÈ ¹Ýº¹ÀÚ À§Ä¡¸¦ ±¸ÇÒ ¼ö ÀÖ´Ù. »ðÀÔ ¼º°ø ¿©ºÎ³ª »ðÀÔµÈ À§Ä¡¿¡ °ü½ÉÀÌ ¾ø´Ù¸é ¸®ÅÏ°ªÀº ¹«½ÃÇصµ »ó°ü¾ø´Ù.

¼Â¿¡ ºñÇØ ¸ÖƼ¼ÂÀº Áߺ¹ÀÌ Çã¿ëµÇ¹Ç·Î ù ¹ø° insert ÇÔ¼öÀÇ ¿øÇüÀÌ Á¶±Ý ´Ù¸£´Ù. ¸®ÅÏ Å¸ÀÔÀÌ ´Ù¸¥µ¥ Áߺ¹ÀÌ Çã¿ëµÇ¹Ç·Î valÀÌ ¼Â¿¡ ÀÌ¹Ì Æ÷ÇԵǾî ÀÖ´õ¶óµµ »ðÀÔÀº Ç×»ó ¼º°øÇÑ´Ù. ±×·¡¼­ ¼º°ø ¿©ºÎ´Â ¸®ÅÏÇÒ ÇÊ¿ä°¡ ¾øÀ¸¸ç »ðÀÔµÈ À§Ä¡¸¦ °¡¸®Å°´Â ¹Ýº¹ÀÚ¸¸ ¸®ÅϵȴÙ.

 

iterator insert(const value_type& val);

 

³ª¸ÓÁö insert ÇÔ¼ö´Â ¼Â°ú ¸ÖƼ¼ÂÀÇ ¿øÇüÀÌ µ¿ÀÏÇÏ´Ù. µÎ ¹ø° ¹öÀüÀÇ insert´Â »ðÀÔ À§Ä¡¸¦ ÁöÁ¤ÇÏ´Â ¹Ýº¹ÀÚ°¡ Àμö·Î Àü´ÞµÇ´Âµ¥ ÀÌ ¹Ýº¹ÀÚ´Â ºü¸¥ »ðÀÔÀ» À§ÇØ ¿ì¼± °Ë»öÇÒ ½ÃÀÛ À§Ä¡¸¦ Á¦°øÇÏ´Â ÈùÆ® ¿ªÇÒÀ» ÇÒ »ÓÀÌ´Ù. ´ëÃæÀÌ¶óµµ Á¤·ÄµÇ¾î ÀÖ´Â ÄÁÅ×À̳ÊÀÇ °ªÀ» ¼Â¿¡ Ãß°¡ÇÑ´Ù¸é ¸Å ¿ä¼Ò¿¡ ´ëÇØ »ðÀÔ À§Ä¡¸¦ ÀÏÀÏÀÌ Ã£´Â °Íº¸´Ù Á÷Àü¿¡ »ðÀÔµÈ °÷¿¡¼­ À§Ä¡ ¼±Á¤À» ½ÃÀÛÇϸé ÈξÀ ´õ ºü¸¦ °ÍÀÌ´Ù.

¿¹¸¦ µé¾î ÀÛÀº °ªºÎÅÍ Å« °ªÀ» Â÷·Ê´ë·Î Ãß°¡ÇÑ´Ù¸é ¼ÂÀÇ ³¡ ºÎºÐ¿¡ ¹èÄ¡µÉ È®·üÀÌ ³ôÀ¸¹Ç·Î »ðÀÔ À§Ä¡·Î end()¸¦ ÁÖ´Â °ÍÀÌ À¯¸®ÇÏ´Ù. ¾îµð±îÁö³ª ÈùÆ® Á¤º¸ÀÏ »ÓÀ̹ǷΠ¾Æ¹« À§Ä¡³ª ÁöÁ¤Çصµ »ðÀÔÀº ¼º°øÇϸç Á¦ À§Ä¡¸¦ ã¾Æ°£´Ù. »ðÀÔÇÒ °ª val°¡ ÀÌ¹Ì ¼Â¿¡ Á¸ÀçÇÑ´Ù¸é »ðÀÔÀº ½ÇÆÐÇϸç À̶§´Â ¼Â ³»¿¡ ÀÌ¹Ì Á¸ÀçÇÏ´Â valÀ§Ä¡°¡ ¸®ÅϵȴÙ. ¹°·Ð ¸ÖƼ¼ÂÀº ¹«Á¶°Ç ¼º°øÇÑ´Ù. »ðÀÔ¿¡ ¼º°øÇßÀ¸¸é »ðÀÔµÈ À§Ä¡°¡ ¸®ÅϵȴÙ.

¼¼ ¹ø° ¹öÀüÀÇ insert´Â ¹Ýº¹ÀÚ ±¸°£ÀÇ °ªµéÀ» ÇѲ¨¹ø¿¡ »ðÀÔÇÑ´Ù. Çϳª¾¿ »ðÀÔÇÏ´Â °Íº¸´Ù´Â ÈξÀ ´õ ºü¸£°Ô »ðÀ﵃ °ÍÀÌ´Ù. ¼Â¿¡ ÀÌ¹Ì »ðÀÔµÈ °ªÀº ¹°·Ð »ðÀÔµÇÁö ¾ÊÀ¸¸ç ¸ÖƼ¼ÂÀº Å°ÀÇ Á¸Àç ¿©ºÎ¿¡ »ó°ü¾øÀÌ ÀüºÎ »ðÀÔÇÑ´Ù. ´ÙÀ½ ¿¹Á¦´Â ¼ÂÀÇ »ý¼ºÀÚ¿Í »ðÀÔ ÇÔ¼öµéÀ» Å×½ºÆ®ÇÑ´Ù.

 

¿¹ Á¦ : setcon

#include <iostream>

#include <set>

using namespace std;

 

template<typename C> void dump(const char *desc, C c) { cout.width(12);cout << left << desc << "==> ";

      copy(c.begin(),c.end(),ostream_iterator<typename C::value_type>(cout," ")); cout << endl; }

 

void main()

{

     int ar[]={1,4,8,1,9,6,3};

     int i;

     set<int> s;

     for (i=0;i<sizeof(ar)/sizeof(ar[0]);i++) {

          s.insert(ar[i]);

     }

     dump("¿øº»",s);

 

     set<int> s2=s;

     dump("»çº»",s2);

 

     const char *str="ASDFASDFGHJKL";

     set<char> sc(&str[0],&str[13]);

     dump("¹®ÀÚ¼Â",sc);

}

 

¼Â°ú ¸ÖƼ¼ÂÀº set Çì´õ ÆÄÀÏ¿¡ Á¤ÀǵǾî ÀÖÀ¸¹Ç·Î ÀÌ Çì´õ ÆÄÀÏÀ» ÀÎŬ·çµåÇØ¾ß ÇÑ´Ù. ½ÇÇà °á°ú´Â ´ÙÀ½°ú °°´Ù.

 

¿øº»        ==> 1 3 4 6 8 9

»çº»        ==> 1 3 4 6 8 9

¹®Àڼ      ==> A D F G H J K L S

 

µðÆúÆ® »ý¼ºÀÚ·Î Á¤¼ö¸¦ ÀúÀåÇÏ´Â set<int> ŸÀÔÀÇ ºó ¼Â s¸¦ »ý¼ºÇÏ°í insert ÇÔ¼ö·Î ar¹è¿­ÀÇ °ªÀ» Â÷·Ê´ë·Î ¼Â¿¡ »ðÀÔÇß´Ù. ar¹è¿­¿¡´Â 1ÀÌ µÎ °³ ÀÖ°í Á¤·ÄµÇ¾î ÀÖÁö ¾ÊÁö¸¸ ¼ÂÀÌ Áߺ¹À» Çã¿ëÇÏÁö ¾ÊÀ¸¹Ç·Î 1Àº ÇÑ ¹ø¸¸ µé¾î°¡¸ç »ðÀÔÇÒ ¶§ºÎÅÍ Á¤·ÄµÈ À§Ä¡¿¡ ÀúÀåµÇ¹Ç·Î s´Â Ç×»ó Á¤·Ä »óŸ¦ À¯ÁöÇÑ´Ù. for ·çÇÁ¿¡ ÀÇÇØ ar ¹è¿­ÀÇ °ªÀÌ s¿¡ »ðÀԵǴ °úÁ¤Àº ´ÙÀ½°ú °°´Ù.

s2´Â º¹»ç »ý¼ºÀÚ·Î s¸¦ º¹»ç¹ÞÀº °ÍÀ¸¹Ç·Î s¿Í ¶È°°Àº »çº»À¸·Î »ý¼ºµÉ °ÍÀÌ´Ù. ³»ºÎ¿¡¼­´Â sÀÇ ¸ðµç ¿ä¼ÒµéÀ» s2·Î ±íÀº º¹»çÇÏ¿© ¿ÏÀüÇÑ »çº»À» ÀÛ¼ºÇÑ´Ù. ¶È°°Àº µ¿ÀÛÀ» ÇÏ´Â ´ëÀÔ ¿¬»êÀÚµµ Á¤ÀǵǾî ÀÖÀ¸¹Ç·Î s2¸¦ ºó ¼ÂÀ¸·Î ¸¸µç ÈÄ s2=s; ·Î ´ëÀÔÀ» Çصµ È¿°ú´Â µ¿ÀÏÇÏ´Ù. ¹°·Ð »ý¼º ½ÃÁ¡¿¡¸¸ °°À» »ÓÀÌÁö s¿Í s2´Â º°°³ÀÇ ¼ÂÀ̹ǷΠÀÌÈÄ ¿ÏÀüÈ÷ µ¶¸³ÀûÀ¸·Î ¿ä¼ÒµéÀ» °ü¸®ÇÑ´Ù.

sc´Â ¹®ÀÚÇü ¼ÂÀε¥ str ¹®ÀÚ ¹è¿­ÀÇ Àü ±¸°£À» »ðÀÔÇß´Ù. ÀÔ·Â ¹Ýº¹ÀÚÀ̱⸸ ÇÏ¸é µÇ¹Ç·Î º¤Åͳª ¸®½ºÆ® µîÀÇ ´Ù¸¥ ÄÁÅ×À̳ÊÀÇ °ªµé·ÎºÎÅÍ ¼ÂÀ» »ý¼ºÇÒ ¼ö ÀÖ´Ù. Áߺ¹µÇ´Â °ªÀº Á¦°ÅµÇ°í ¹®ÀÚ Å©±â ¼øÀ¸·Î Á¤·ÄµÈ´Ù. ASDF ¹®ÀÚµéÀÌ µÎ ¹ø¾¿ ÀÖÁö¸¸ °á°ú ¼Â¿¡´Â Çϳª¾¿¸¸ µé¾î°£´Ù. À§ ¿¹Á¦ÀÇ set Ŭ·¡½º À̸§À» multisetÀ¸·Î º¯°æÇÏ¸é °á°ú´Â ´ÙÀ½°ú °°¾ÆÁø´Ù.

 

¿øº»        ==> 1 1 3 4 6 8 9

»çº»        ==> 1 1 3 4 6 8 9

¹®Àڼ      ==> A A D D F F G H J K L S S

 

Á¤·ÄÀº µÇÁö¸¸ Å°°¡ Áߺ¹µÉ ¼ö ÀÖÀ¸¹Ç·Î »ðÀÔµÈ È¸¼ö¸¸Å­ Å°°¡ ¹Ýº¹ÀûÀ¸·Î ³ªÅ¸³­´Ù. ¼Â¿¡¼­ ¿ä¼Ò¸¦ »èÁ¦ÇÒ ¶§´Â erase ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù.

 

iterator erase(iterator it);

iterator erase(iterator first, iterator last);

size_type erase(const Key& key);

 

¼¼ °¡Áö ¹æ½ÄÀ¸·Î »èÁ¦ÇÒ ¼ö Àִµ¥ °¢°¢ ¹Ýº¹ÀÚ°¡ ÁöÁ¤ÇÏ´Â ¿ä¼Ò Çϳª, ¹Ýº¹ÀÚ ±¸°£ÀÇ ¸ðµç ¿ä¼Ò ¶Ç´Â ƯÁ¤ÇÑ Å°¸¦ °¡Áö´Â ¿ä¼Ò¸¦ ã¾Æ¼­ »èÁ¦ÇÑ´Ù. Å°¸¦ ÁöÁ¤ÇÏ´Â eraseÀÇ °æ¿ì ÁöÁ¤ÇÑ Å°°¡ ¼Â¿¡ Æ÷ÇԵǾî ÀÖÁö ¾ÊÀ¸¸é ¾Æ¹« °Íµµ ÇÏÁö ¾ÊÀ¸¸ç ¸ÖƼ¼ÂÀÇ °æ¿ì °°Àº Å°°ªÀ» °¡Áö´Â ¸ðµç ¿ä¼Ò¸¦ ÇѲ¨¹ø¿¡ »èÁ¦ÇÑ´Ù.

°Ë»ö

¼Â¿¡¼­ ƯÁ¤ Å°¸¦ ãÀ» ¶§´Â ´ÙÀ½°ú °°ÀÌ ¼±¾ðµÈ find ¸â¹ö ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù. »ó¼ö ¹öÀü°ú ºñ»ó¼ö ¹öÀüÀÌ Áߺ¹ Á¤ÀǵǾî ÀÖ´Ù.

 

iterator find(const Key& val);

const_iterator find(const Key& val) const;

 

Àμö·Î ã°íÀÚ ÇÏ´Â Å°¸¸ Àü´ÞÇÏ¸é µÈ´Ù. val Å°°¡ ¹ß°ßµÇ¸é ±× ¹Ýº¹ÀÚ¸¦ ¸®ÅÏÇÏ¸ç ¾øÀ» °æ¿ì´Â end()°¡ ¸®ÅϵȴÙ. °£´ÜÇÏ°Ô ¿¹Á¦¸¦ ¸¸µé¾î º¸ÀÚ.

 

¿¹ Á¦ : setfind

#include <iostream>

#include <set>

#include <algorithm>

using namespace std;

 

void main()

{

     set<int> s;

     s.insert(1);

     s.insert(2);

     s.insert(3);

 

     set<int>::iterator it;

     it=s.find(2);

     if (it != s.end()) {

          cout << *it << endl;

     } else {

          cout << "ã´Â Å°°¡ ¾ø½À´Ï´Ù." << endl;

     }

}

 

1, 2, 3 ¼¼ °³ÀÇ Á¤¼ö¸¦ ³Ö¾î ³õ°í 2¸¦ ã¾ÒÀ¸¹Ç·Î ´ç¿¬È÷ 2°¡ Ãâ·ÂµÉ °ÍÀÌ´Ù. 4³ª 5¸¦ °Ë»öÇϸé Å°°¡ ¾ø´Ù°í Ãâ·ÂµÈ´Ù. find ¸â¹ö ÇÔ¼ö ´ë½Å Àü¿ª find ¾Ë°í¸®Áò ÇÔ¼ö¸¦ »ç¿ëÇÒ ¼öµµ Àִµ¥ ´ÙÀ½°ú °°ÀÌ ¼öÁ¤Çصµ °á°ú´Â ÀÏ´Ü µ¿ÀÏÇÏ´Ù.

 

it=find(s.begin(),s.end(),2);

 

¼ÂÀÇ ¹Ýº¹ÀÚ°¡ ÀÓÀÇ Á¢±ÙÀÌ ¾Æ´Ï¹Ç·Î Àü¿ª find ÇÔ¼ö´Â ¼ÂÀÇ ¸ðµç ¿ä¼Ò¸¦ ¼øȸÇϸ鼭 ¼øÂ÷ÀûÀ¸·Î °Ë»öÇÏÁö¸¸ find ¸â¹ö ÇÔ¼ö´Â Á¤·ÄµÇ¾î Àִٴ Ư¼ºÀ» ÀÌ¿ëÇÏ¿© ÀÌÁø Æ®¸® °Ë»öÀ» ÇϹǷΠÈξÀ ´õ ºü¸£´Ù. ÀÌ ¿¹Á¦ÀÇ °æ¿ì ¿ä¼Ò°¡ °íÀÛ ¼¼ °³¹Û¿¡ ¾ø¾î ¾Æ¹« Â÷À̵µ ´À³¥ ¼ö ¾ø°ÚÁö¸¸ 1000°³ Á¤µµ¸¸ µÇ¾îµµ ¼øÂ÷ °Ë»ö°ú ÀÌÁø °Ë»öÀº ¾öû³­ Â÷ÀÌ°¡ ¹ú¾îÁú °ÍÀÌ´Ù. ¶ÇÇÑ find¾Ë°í¸®ÁòÀº ´ÙÀ½¿¡ ¼³¸íÇÒ µ¿µî¼ºÀÌ ¾Æ´Ñ µ¿Àϼº °³³äÀ¸·Î ¿ä¼Ò¸¦ °Ë»öÇÑ´Ù´Â ¸é¿¡¼­ ¼Â°ú´Â ¾î¿ï¸®Áö ¾Ê´Â´Ù.

¸ÖƼ¼ÂÀÇ °æ¿ì find ¸â¹ö ÇÔ¼ö·Î ãÀ¸¸é Áß°£ Áß°£À» ÄîÄî Âñ·¯°¡¸ç °Ë»öÇϹǷΠÁߺ¹µÈ Å° Áß ¾î¶² °ÍÀÌ °Ë»öµÉ Áö ¾Ë ¼ö ¾ø´Âµ¥ ÀÌ´Â ÀÌÁø °Ë»öÀÇ ÀϹÝÀûÀΠƯ¼ºÀÌ´Ù. ¹Ý¸é find Àü¿ª ÇÔ¼ö´Â óÀ½ºÎÅÍ ¼ø¼­´ë·Î °Ë»öÇϹǷΠÇ×»ó ù ¹ø° ¿ä¼Ò°¡ °Ë»öµÈ´Ù. Áߺ¹µÈ Å° Áß Ã¹ ¹ø° ¶Ç´Â ¸¶Áö¸· ¿ä¼Ò¸¦ ã°í ½ÍÀ¸¸é lower_bound, upper_bound ÇÔ¼ö¸¦ »ç¿ëÇØ¾ß ÇÏ¸ç µÑÀ» ÇѲ¨¹ø¿¡ Á¶»çÇÏ°í ½ÍÀ¸¸é equal_range ¸â¹ö ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù. equal_range´Â óÀ½°ú ³¡ ¹Ýº¹ÀÚÀÇ ½ÖÀ» Á¶»çÇÏ¿© ¸®ÅÏÇÑ´Ù.

 

iterator lower_bound(const Key& _Key);

iterator upper_bound(const Key& _Key);

pair <iterator, iterator> equal_range (const Key& _Key);

 

¿¹¸¦ µé¾î ´ÙÀ½°ú °°Àº Á¤¼ö ¸ÖƼ¼Â¿¡¼­ 7À» ã´Â´Ù°í ÇØ º¸ÀÚ. 7ÀÌ ´Ù¼¸ °³³ª Áߺ¹µÇ¾î Àִµ¥ È£ÃâÇÏ´Â ÇÔ¼ö¿¡ µû¶ó ¾î¶² 7ÀÌ °Ë»öµÉÁö°¡ ´Þ¶óÁø´Ù.

find Àü¿ª ÇÔ¼ö¿Í lower_bound°¡ ã´Â Å°´Â ¿ì¿¬È÷ °°Áö¸¸ ÀÌ µÑÀÇ °Ë»ö ¼Óµµ´Â ¾öû³­ Â÷ÀÌ°¡ ÀÖ´Ù. upper_bound ÇÔ¼ö´Â ¸¶Áö¸· ¿ä¼Ò¸¦ ã´Â °ÍÀÌ ¾Æ´Ï¶ó ¸¶Áö¸· ¿ä¼ÒÀÇ ´ÙÀ½À» ã´Â´Ù´Â Á¡À» ÁÖÀÇÇÏÀÚ.

¼ÂÀÇ È°¿ë

¾î¶² °ªÀÇ ÁýÇÕÀ» °ü¸®Çϴµ¥ Áߺ¹µÇ¾î¼­´Â ¾ÈµÇ¸ç ºü¸¥ °Ë»öÀ¸·Î Á¸Àç ¿©ºÎ¸¦ ½Å¼ÓÇÏ°Ô ¾Ë°í ½ÍÀ» ¶§ ¼ÂÀ» »ç¿ëÇÑ´Ù. ´ÙÀ½ ¿¹Á¦´Â ÀÌ·± ¿¹¸¦ º¸¿© ÁØ´Ù.

 

¿¹ Á¦ : stringset

#include <iostream>

#include <string>

#include <set>

using namespace std;

 

void main()

{

     set<string> s;

     string name;

     char ch;

     set<string>::iterator it;

 

     for(;;) {

          cout << "1:»ðÀÔ, 2:»èÁ¦, 3:º¸±â, 4:°Ë»ö, 5:Á¾·á => ";

          cin >> ch;

          switch (ch) {

          case '1':

              cout << "»õ À̸§À» ÀÔ·Â ÇϽÿÀ : ";

              cin >> name;

              s.insert(name);

              break;

          case '2':

              cout << "»èÁ¦ÇÒ À̸§À» ÀÔ·Â ÇϽÿÀ : ";

              cin >> name;

              s.erase(name);

              break;

          case '3':

              for (it=s.begin();it!=s.end();it++) {

                   cout << *it << endl;

              }

              break;

          case '4':

              cout << "°Ë»öÇÒ À̸§À» ÀÔ·Â ÇϽÿÀ : ";

              cin >> name;

              cout << name << "ÀÌ(°¡) " << (s.find(name) != s.end() ? "ÀÖ":"¾ø")

                   << "½À´Ï´Ù." << endl;

              break;

          case '5':

              return;

          }

     }

}

 

ÀÌ ¿¹Á¦ÀÇ ¼Â s´Â ¹®ÀÚ¿­·Î µÈ ¾î¶² À̸§ÀÇ ÁýÇÕÀ» °ü¸®Çϴµ¥ »ç¶÷ À̸§ÀÏ ¼öµµ ÀÖ°í ¿µÈ­ Á¦¸ñÀ̳ª Ã¥ Á¦¸ñÀÌ µÉ ¼öµµ ÀÖ´Ù. ¾Æ¹«Æ° Áߺ¹µÇÁö ¸»¾Æ¾ß ÇÏ´Â À̸§ÀÇ ¸ñ·ÏÀ» °ü¸®ÇÏ°í ½ÍÀ» ¶§ ¼ÂÀÌ ÀûÇÕÇÏ´Ù. À̸§À» »ðÀÔÇÒ ¶§´Â insert ÇÔ¼ö¸¸ È£ÃâÇÏ¸é ¾Ë¾Æ¼­ ã±â ÆíÇÑ À§Ä¡¿¡ Àû´çÈ÷ »ðÀÔÇÏ¸ç ¸¸¾à ÀÌ¹Ì Á¸ÀçÇÏ´Â À̸§À̶ó¸é »ðÀÔÀº °ÅºÎµÈ´Ù. »èÁ¦ÇÏ°í ½ÍÀ» ¶§´Â erase¸¦ È£ÃâÇϴµ¥ ¾ø´Â À̸§À̶ó¸é ¾Æ¹« Àϵµ ÀϾÁö ¾ÊÀ» °ÍÀÌ´Ù.

À̸§ÀÇ Á¸Àç ¿©ºÎ¸¦ ¾Ë°í ½Í´Ù¸é find·Î °Ë»öÇØ º¼ ¼ö Àִµ¥ Á¤·ÄµÈ ÀڷḦ ÀÌÁø °Ë»öÇϹǷΠ¼ÂÀÇ Å©±â°¡ ¾Æ¹«¸® Ä¿µµ °í¼ÓÀ¸·Î Á¸Àç ¿©ºÎ¸¦ Á¶»çÇÒ ¼ö ÀÖ´Ù. ¼ÂÀÇ ¸ðµç ¿ä¼Ò¸¦ Ãâ·ÂÇϰųª ÀúÀåÇÏ°í ½Í´Ù¸é beginºÎÅÍ end±îÁö ¼øȸÇϸ鼭 ¹Ýº¹ÀÚ°¡ °¡¸®Å°´Â ³»¿ëÀ» Ãâ·ÂÇÏ¸é µÈ´Ù. ¶Ç´Â for_each °°Àº ¾Ë°í¸®ÁòÀ» »ç¿ëÇÒ ¼öµµ ÀÖ´Ù. ÄÜ¼Ö È¯°æÀ̶ó ¸Þ´º ¹æ½ÄÀ¸·Î ½ÇÇàµÈ´Ù.

 

1:»ðÀÔ, 2:»èÁ¦, 3:º¸±â, 4:°Ë»ö, 5:Á¾·á => 1

»õ À̸§À» ÀÔ·Â ÇϽÿÀ : ¹Ú¹Ì¿µ

1:»ðÀÔ, 2:»èÁ¦, 3:º¸±â, 4:°Ë»ö, 5:Á¾·á => 1

»õ À̸§À» ÀÔ·Â ÇϽÿÀ : ±èÇѽ½

1:»ðÀÔ, 2:»èÁ¦, 3:º¸±â, 4:°Ë»ö, 5:Á¾·á => 1

»õ À̸§À» ÀÔ·Â ÇϽÿÀ : ±èÇÑ°á

1:»ðÀÔ, 2:»èÁ¦, 3:º¸±â, 4:°Ë»ö, 5:Á¾·á => 3

±èÇÑ°á

±èÇѽ½

¹Ú¹Ì¿µ

1:»ðÀÔ, 2:»èÁ¦, 3:º¸±â, 4:°Ë»ö, 5:Á¾·á => 4

°Ë»öÇÒ À̸§À» ÀÔ·Â ÇϽÿÀ : ±èÇѽ½

±èÇѽ½ÀÌ(°¡) ÀÖ½À´Ï´Ù.

1:»ðÀÔ, 2:»èÁ¦, 3:º¸±â, 4:°Ë»ö, 5:Á¾·á => 4

°Ë»öÇÒ À̸§À» ÀÔ·Â ÇϽÿÀ : ¹ÚÁ¾¸¸

¹ÚÁ¾¸¸ÀÌ(°¡) ¾ø½À´Ï´Ù.

 

ÀÌ ¿¹Á¦Ã³·³ Áߺ¹µÇÁö ¾Ê´Â °ªÀÇ ÁýÇÕÀ» Á÷Á¢ °ü¸®ÇÏ·Á¸é ±²ÀåÈ÷ ¸¹Àº Äڵ尡 ÇÊ¿äÇÏ´Ù. »ðÀÔ, »èÁ¦½Ã ÀÌ¹Ì Á¸ÀçÇÏ´Â °ªÀÎÁö Á¡°ËÇØ¾ß ÇÏ°í »ðÀÔ À§Ä¡¸¦ ¼±Á¤ÇÏ·Á¸é ÀÏÀÏÀÌ ¿ä¼ÒµéÀÇ ´ë¼Ò¸¦ ºñ±³ÇØ ºÁ¾ß ÇÑ´Ù. ÀÌÁø Æ®¸®¸¦ °ü¸®ÇÏ´Â Äڵ嵵 Á¤±³ÇØ¾ß Çϸç ÀÌÁø Æ®¸® ¼øȸ¸¸ Çصµ ±×¸® °£´ÜÇÑ ÀÛ¾÷ÀÌ ¾Æ´Ï´Ù. ÀÌ ¸ðµç 󸮸¦ ¼ÂÀÌ ´ë½ÅÇϹǷΠ¿ì¸®´Â ÀÚ·áÀÇ °ü¸®¿¡´Â °ñÄ¡¸¦ ½âÀÏ ÇÊ¿ä¾øÀÌ »ç¿ëÀÚ¿ÍÀÇ ÀÎÅÍÆäÀ̽º¸¸ ½Å°æ¾²¸é µÈ´Ù. ¸Þ´º³ª Ãâ·ÂÇÏ°í »ç¿ëÀÚÀÇ ¸í·ÉÀ» ¹Þ¾Æ ¼Â°ú Á߰踸 ÇÏ¸é µÇ´Â °ÍÀÌ´Ù.

À̸ÞÀÏ ÁÖ¼Ò ¼öÁý±â °°Àº ÇÁ·Î±×·¥µµ ¼ÂÀ» ¾²±â¿¡ ¾ÆÁÖ ÀûÇÕÇÏ´Ù. À¥ »çÀÌÆ®¸¦ ÀÚµ¿À¸·Î µ¹¾Æ ´Ù´Ï¸ç À̸ÞÀÏÀ» ¼öÁýÇÏ´Â ÇÁ·Î±×·¥À» ¸¸µç´Ù°í ÇØ º¸ÀÚ. HTML ÆäÀÌÁö¿¡¼­ @ ¹®ÀÚ°¡ Æ÷ÇԵǾî ÀÖ°í À̸ÞÀÏ ºñ½ÁÇÏ°Ô »ý±ä ¹®ÀÚ¿­À» ¸ðµÎ ¸ð¾Æ¾ß Çϴµ¥ ÀÌ¹Ì ¼öÁýÇÑ ÁÖ¼Ò´Â ´Ù½Ã ¸ðÀ» ÇÊ¿ä°¡ ¾ø´Ù. ÀÌ·² ¶§ ¼ÂÀ» Çϳª ¸¸µé¾î ³õ°í À̸ÞÀÏ ºñ½ÁÇØ º¸ÀÌ´Â ¹®ÀÚ¿­À» ÃßÃâÇÏ¿© ¹«Á¶°Ç insert¸¸ ÇÏ¸é ³ª¸ÓÁö ÀÛ¾÷Àº ¼ÂÀÌ ¾Ë¾Æ¼­ ó¸®ÇÒ °ÍÀÌ´Ù.