Posted by
Jin-Hwan Jeong at Sunday, February 7, 2010
Let's define as followings
template<typename __Tp> class __vector_based : public std::vector<__Tp>
{
public:
typedef typename std::vector<__Tp>::iterator iterator;
typedef typename std::vector<__Tp>::reverse_iterator reverse_iterator;
public:
__vector_based() { };
virtual ~__vector_based() { clear(); };
public:
virtual void clear() {
iterator i;
for (i = std::vector<__Tp>::begin(); i != std::vector<__Tp>::end(); i++)
delete *i;
std::vector<__Tp>::clear();
};
__Tp at(int __i)
{
if (__i < 0)
return at(int(std::vector<__Tp>::size()) + __i);
else if (__i >= int(std::vector<__Tp>::size()))
return at(__i - int(std::vector<__Tp>::size()));
return std::vector<__Tp>::at(__i);
};
__Tp operator[] (int __i) { return at(__i); };
protected:
};
Now, use like this
typedef struct
{
// fiels
} user_type_t;
class user_type : public __vector_based
{
public:
public:
protected:
};
0 comments:
Post a Comment