STL VECTOR new·Î »ý¼ºÇÑ ¸Þ¸ð¸® »èÁ¦

STL vector¿¡¼­ new·Î »ý¼ºÇÑ ¾ÆÀÌÅÛ »èÁ¦´Â delete·Î »èÁ¦ÇØ¾ß ¸Þ¸ð¸®°¡ ¸Þ¸ð¸® ¸¯ÀÌ ¹ß»ýÇÏÁö ¾Ê´Â´Ù.
new »ý¼ºÇÑ ¸Þ¸ð¸® ÇØÁ¦´Â ÀϹÝÀûÀ¸·Î ¾Æ·¡¿Í °°ÀÌ ÇØÁØ´Ù.

#include <vector>

#include <iostream>

 

using namespace std;

 

void main()

{

    vector<int*> list;

 

    //Ãß°¡

    list.clear();

    for(int i = 0; i < 10; i++)

    {

        int* p = new int;    *p = 1;

        list.push_back(p);

    }

 

    //»èÁ¦

    vector<int*>::iterator iter = list.begin();

    vector<int*>::iterator endIer = list.end();

    for(; iter != list.end(); ++iter)

    {

        delete (*iter);

    }

    list.clear();

}

¾Æ·¡´Â for_each¿Í ÇÔ¼ö( ¶Ç´Â ÇÔ¼ö °´Ã¼)¸¦ »ç¿ëÇÏ¿© new·Î »ý¼ºÇÑ Æ÷ÀÎÅÍ ¾ÆÀÌÅÛÀ» »èÁ¦ÇÏ°í ÀÖ´Ù.
ÅÛÇø´À» »ç¿ëÇÏ¿© ¹ü¿ëÀûÀ¸·Î »ç¿ë ÇÒ ¼ö ÀÖµµ·Ï ÇÏ¿´´Ù.

 

< ÇÔ¼ö »ç¿ë >

#include <vector>

#include <iostream>

#include <algorithm>

 

using namespace std;

 

template <class T>

void DeleteItem(T* item)

{

    delete item;

}

 

void main()

{

    vector<int*> list;

 

    //Ãß°¡

    list.clear();

    for(int i = 0; i < 10; i++)

    {

        int* p = new int;    *p = 1;

        list.push_back(p);

    }

 

    //»èÁ¦

    for_each(list.begin(), list.end(), DeleteItem<int>);

}

 

< ÇÔ¼ö °´Ã¼ »ç¿ë >

#include <vector>

#include <iostream>

#include <algorithm>

 

using namespace std;

 

class DeleteItem

{

public:

    template<typename T>

    void operator()(const T* ptr) const

    {

        delete ptr;

    }

};

 

void main()

{

    vector<int*> list;

 

    //Ãß°¡

    list.clear();

    for(int i = 0; i < 10; i++)

    {

        int* p = new int;    *p = 1;

        list.push_back(p);

    }

 

    //»èÁ¦

    for_each(list.begin(), list.end(), DeleteItem());

}