»ðÀÔ, »èÁ¦ ÇÔ¼öµµ º¤ÅÍ¿Í µ¿ÀÏÇÏ´Ù. ¸â¹ö ÇÔ¼öÀÇ À̸§»Ó¸¸ ¾Æ´Ï¶ó ¿øÇü±îÁö µ¿ÀÏÇÏ¸ç »ç¿ë ¹æ¹ýµµ ¹°·Ð ¶È°°´Ù.
iterator insert(iterator it, const T& x = T());
void insert(iterator it, size_type n, const T& x);
void insert(iterator it, const_iterator first, const_iterator last);
iterator erase(iterator it);
iterator erase(iterator first, iterator last);
´Ù¸¸ ó¸® ¼Óµµ´Â º¤Åͺ¸´Ù ÈξÀ ºü¸¥µ¥ À§Ä¡¿Í ¿ä¼Ò °³¼ö¿¡ »ó°ü¾øÀÌ »ó¼ö ½Ã°£³»¿¡ »ðÀÔ, »èÁ¦µÈ´Ù. ¼Óµµ°¡ ºü¸£´Ù´Â °Í ¿Ü¿¡µµ ¹Ýº¹ÀÚ°¡ ¹«È¿ÈµÇÁö ¾Ê´Â ÀåÁ¡µµ ÀÖ´Ù. »ðÀÔ, »èÁ¦µÇ´Â ³ëµå¿Í ¾Õ µÚ ³ëµåÀÇ ¸µÅ©¸¸ ¹Ù²î¹Ç·Î ³ª¸ÓÁö ³ëµåµéÀº À§Ä¡¿¡ ÀüÇô º¯È°¡ ¾ø´Ù. ´Ü, »èÁ¦µÇ´Â ³ëµåÀÇ ¹Ýº¹ÀÚ¸¸ ¿¹¿ÜÀûÀ¸·Î ¹«È¿ÈµÈ´Ù. °£´ÜÇÑ ÇÔ¼öÁö¸¸ Àß µ¿ÀÛÇÏ´ÂÁö È®ÀÎÀº ÇØ ºÁ¾ß ÇϹǷΠ¿¹Á¦¸¸ ±¸°æÇØ º¸ÀÚ.
¿¹ Á¦ : listinsert |
#include <iostream>
#include <list>
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()
{
const char *str="abcdefghij";
list<char> lc(&str[0],&str[10]);
list<char>::iterator it;
dump("ÃÖÃÊ",lc);
it=lc.begin();it++;it++;it++;it++;it++;
lc.insert(it,'Z');
dump("Z »ðÀÔ",lc);
it=lc.end();it--;it--;it--;
lc.erase(it);
dump("h»èÁ¦",lc);
}
¹®ÀÚÇüÀÇ ¸®½ºÆ® lc¸¦ ¼±¾ðÇϰí a ~ j±îÁö 10°³ÀÇ ¾ËÆÄºª ¹®ÀÚ¸¦ ÀúÀåÇØ ³õ¾Ò´Ù. ½ÃÀÛ À§Ä¡¿¡¼ ´Ù¼¸ ¹ø µÚ·Î À̵¿ÇÑ ÈÄ ÀÌ À§Ä¡¿¡ 'Z' ¹®ÀÚ¸¦ insert ÇÔ¼ö·Î »ðÀÔÇß´Ù. f¹®ÀÚ¾Õ¿¡ Z°¡ »ðÀ﵃ °ÍÀÌ´Ù. ±×¸®°í ³¡¿¡¼ ¼¼Ä ¾ÕÂÊÀ¸·Î À̵¿ÇÑ ÈÄ erase ÇÔ¼ö·Î ÀÌ À§Ä¡¸¦ »èÁ¦Çß´Ù. ³¡¿¡¼ ¼¼ ¹øÂ°¿¡´Â h¹®ÀÚ°¡ Àִµ¥ ÀÌ ¹®ÀÚ°¡ »èÁ¦µÉ °ÍÀÌ´Ù.
++À» ¿©·¯ ¹ø »ç¿ëÇÏ¿© À̵¿ÇÏ´Â °ÍÀÌ ¹«Ã´ ¸¶À½¿¡ ¾Èµé°ÚÁö¸¸ ¸®½ºÆ®ÀÇ ¹Ýº¹ÀÚ´Â ¾ç¹æÇ⠹ݺ¹ÀÚ°¡ ¾Æ´Ï¹Ç·Î it += 5 ¿¬»êÀ¸·Î ÇѲ¨¹ø¿¡ ´Ù¼¸ ÄÀ» À̵¿ÇÒ ¼ö´Â ¾ø´Ù. ¾ç¹æÇ⠹ݺ¹ÀÚ´Â ¸µÅ©¸¦ µû¶ó Â÷·Ê´ë·Î À̵¿ÇÏ´Â ¼ö¹Û¿¡ ¾ø´Ù. ²À ÇÑ ¹ø¿¡ À̵¿ÇÏ°í ½Í´Ù¸é find ÇÔ¼ö·Î ¿øÇÏ´Â ¿ä¼Ò¸¦ °Ë»öÇØ¼ À̵¿Çϰųª advance ÇÔ¼ö¸¦ »ç¿ëÇÒ ¼ö Àִµ¥ ÀÌ ÇÔ¼öµéµµ ¾îÂ÷ÇÇ ++À» ¿©·¯ ¹ø ¹Ýº¹ÇϹǷΠ¼Ò¿äµÇ´Â ½Ã°£Àº ¸¶Âù°¡ÁöÀÌ´Ù.
ÃÖÃÊ ==> a b c d e f g h i j
Z »ðÀÔ ==> a b c d e Z f g h i j
h»èÁ¦ ==> a b c d e Z f g i j
µ¿ÀÛÀº ¹°·Ð ÀßÇϴµ¥ ÀÌ ÂªÀº ¿¹Á¦¿¡¼´Â ´À³¢±â ÈûµéÁö¸¸ »ðÀÔ, »èÁ¦ ¼Óµµ°¡ ¾öû³ª°Ô ºü¸£´Ù. ¿ä¼Ò°¡ ¾Æ¹«¸® ¸¹¾Æµµ, ¾î¶² À§Ä¡ÀÇ °ªÀ» »èÁ¦Çϳª Ç×»ó ÀÏÁ¤ÇÑ ½Ã°£³»¿¡¼ ¿Ï·áÇÒ ¼ö ÀÖ´Ù. ƯÁ¤°ªÀ» °¡Áö´Â ¿ä¼Ò¸¦ ¸ðµÎ »èÁ¦ÇÏ°í ½ÍÀ» ¶§´Â ´ÙÀ½ ¸â¹ö ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù.
void remove(const Type& val);
void remove_if(UniPred F)
remove´Â »èÁ¦ÇÒ °ªÀ» ¹Ù·Î ÁöÁ¤Çϰí remove_if´Â Á¶°ÇÀÚ¿¡ ¸Â´Â ¿ä¼Ò¸¸ »èÁ¦ÇÑ´Ù. °ªÀ» °Ë»öÇÑ ÈÄ »èÁ¦ÇϹǷΠfind¿Í erase¸¦ ¼ø¼´ë·Î ¼öÇàÇÑ´Ù°í »ý°¢ÇÏ¸é µÈ´Ù. ´ÙÀ½ ¿¹Á¦´Â ¹®ÀÚ ¸®½ºÆ®¿¡¼ 'l'À» ã¾Æ ¸ðµÎ »èÁ¦ÇÑ´Ù.
¿¹ Á¦ : listremove |
#include <iostream>
#include <list>
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()
{
const char *str="double linked list class";
list<char> li(&str[0],&str[strlen(str)]);
dump("ÃÖÃÊ",li);
li.remove('l');
dump("l»èÁ¦",li);
}
¹®ÀÚµé Áß l¸¸ ¸ðÁ¶¸® »èÁ¦µÈ´Ù.
ÃÖÃÊ ==> d o u b l e l i n k e d l i s t c l a s s
l»èÁ¦ ==> d o u b e i n k e d i s t c a s s
Á¶°ÇÀÚ ¹öÀüÀ» »ç¿ëÇϸé ÀÏÁ¤ÇÑ Á¶°ÇÀ» ¸¸Á·ÇÏ´Â ¿ä¼Ò¸¸ °ñ¶ó »èÁ¦ÇÒ ¼öµµ ÀÖ´Ù. ¿¹¸¦ µé¾î ¸ðÀ½¸¸ »èÁ¦ÇѴٰųª °ø¹é¸¸ Á¦°ÅÇÏ´Â °Íµµ °¡´ÉÇÏ´Ù. °°Àº À̸§ÀÇ Àü¿ª remove ¾Ë°í¸®Áòµµ Àִµ¥ ¸®½ºÆ®ÀÇ remove ¸â¹ö ÇÔ¼ö¿Í´Â µ¿ÀÛÇÏ´Â ¹æ½ÄÀÌ Á¶±Ý ´Ù¸£´Ù. ÀÌ Â÷ÀÌÁ¡¿¡ ´ëÇØ¼´Â ´ÙÀ½ Àå¿¡¼ ¾Ë¾Æº¸µµ·Ï ÇÏÀÚ.