STL vector


VC 6.0¿¡¼­ STLÀ» »ç¿ëÇÒ·Á¸é ´ÙÀ½°ú °°Àº Äڵ带 Æ÷ÇÔ ½ÃÄÑ¾ß ÇÑ´Ù.

#pragma warning(disable:4786)

#include <algorithm>
#include <vector>
#include <iostream>
#include <string>
#include <map>

using namespace std;

VC°¡ ¾Æ´Ï¶ó¸é ù ¹ø° ¶óÀÎÀº Á¦¿Ü ½ÃÄѵµ ÁÁ´Ù.

1. ¼±¾ð

struct TEST_ST
{
       int index;
       float k;
};

vector<TEST_ST>      g_vector;

vector<TEST_ST>      g_vector(100)

ó·³ »çÀÌÁ ¹Ì¸® ¼ÂÆÃÇÏ°Ô µÇ¸é ¼Óµµ°¡ Á¶±Ý ´õ ºü¸¦°ÍÀÌ´Ù.

2. ÀÔ·Â

        TEST_ST  data;
        data.index = 0;
        data.k = 7777;

        g_vector.push_back(data);

º¤ÅÍ ³»ºÎ »ý¼ºÀÚ¿¡¼­ µ¥ÀÌÅÍ Çü ¸¸Å­ new·Î ÇÒ´çÇϱ⠶§¹®¿¡ new·Î »ý¼ºÇÒ ÇÊ¿ä°¡ ¾ø´Ù.
³»°¡ óÀ½¿¡ STLÇÒ ¶§  »ý¼ºÀÚ¿¡ vector¿¡ µé¾î°¥ µ¥ÀÌÅ͸¦ ¸¸µé¾îÁÖ°í ¼Ò¸êÀÚ¿¡¼­ vectorÀÇ
µ¥ÀÌÅ͸¦ ´Ù½Ã ¼Ò¸ê½ÃÅ°´Â ¹Ùº¸ °°Àº ÁþÀ» Çß´øÀûÀÌ ÀÖ´Ù.

push_back ÇÏ°Ô ¸¶Áö¸· ¹è¿­¿¡ ÀúÀåµÉ °ÍÀÌ´Ù.

3. »ç¿ë¹æ¹ý

        vector<TEST_ST>::iterator  iterator;

        for(iterator = g_vector.begin(); iterator != g_vector.end(); iterator++)
                printf("test %d \n", iterator->k);

¹Ýº¹ÀÚ¸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀÌ´Ù. STL¿¡¼­ end()´Â ¸¶Áö¸· µ¥ÀÌÅ͸¦ Áö³ª°£ °ÍÀÌ´Ï Á¶½ÉÇؾßÇÑ´Ù.

        int iSize = g_vector.size();

        for(int i = 0; i < iSize; i++)
                printf("test %d \n", g_vector[i].k);

µÎ ¹ø° »ç¿ë¹æ¹ýÀº ¹è¿­Ã³·³ »ç¿ëÇÏ´Â ¹æ¹ýÀÌ´Ù.
 
4. ¼Ò¸ê

g_vector.clear();

¾îÂ¥ÇÇ ±×³É µÎ´õ¶óµµ ÀÚµ¿¼Ò¸êµÇÁö¸¸ ¸Þ¸ð¸®¸¦ È®º¸Çϱâ À§Çؼ­ ¸ðµÎ ¼Ò¸ê ½ÃÅ°°í ½Í´Ù¸é clear() ÇÑ´Ù.

5. ƯÁ¤Áö¿ª »èÁ¦

        // ÀÔ·Â
        for(int k = 0; k < 100; k++)
        {
                TEST_ST  data;
                data.index = 0;
                data.k = k;

                g_vector.push_back(data);
        }      

        // ƯÁ¤Áö¿ª »èÁ¦
        printf("test %d, size: %d \n", g_vector[55].k, g_vector.size());

        vector<TEST_ST>::iterator  iterator;
        for(iterator = g_vector.begin(); iterator != g_vector.end(); iterator++)
        {
                if(iterator->k  == 55)
                {
                        g_vector.erase(iterator);
                }
        }

        printf("test %d, size: %d \n", g_vector[55].k, g_vector.size());

0ºÎÅÍ 99±îÁö µ¥ÀÌÅ͸¦ ³Ö¾úÀ» ¶§, ¿øÇÏ´Â ¿µ¿ªÀÇ µ¥ÀÌÅ͸¦ »èÁ¦ÇÏ°í ½Í´Ù¸é erase()·Î »èÁ¦ÇÑ´Ù.
k°¡ 55ÀÎ µ¥ÀÌÅ͸¦ »èÁ¦ÇÑ´Ù¸é µÚ¿¡ ÀÖ´ø µ¥ÀÌÅÍÀÇ ¹è¿­µéÀÌ ÇÑÄ­¾¿ ¾ÕÀ¸·Î ´ç°ÜÁ® ¿Â´Ù.
Å©±âµµ Çϳª ÁÙ¾îµç´Ù.

Çش翵¿ªÀÇ »èÁ¦½Ã ÁÖÀÇÇÒ Á¡Àº ¾ÕÀ¸·Î ´ç°Ü¿À´Â °ÍÀ» °¨¾ÈÇØ¾ß Çϱ⠶§¹®¿¡, µÚ¿¡¼­ »èÁ¦ÇØ¾ß ÇÒ°ÍÀÌ´Ù.
À©µµ¿ì APIÀÇ ¸®½ºÆ® »èÁ¦ÇÏ°í ºñ½ÁÇÏ°Ô ÀÛµ¿ÇÑ´Ù.

»èÁ¦ÈÄ °á°ú´Â ´ÙÀ½°ú °°´Ù.

test 55, size: 100
test 56, size: 99

[Æß]
http://www.xraylith.wisc.edu/~khan/software/stl/STL.newbie.html
http://www.cs.fiu.edu/~weiss/dsaa_c++/code/