1 #if !defined AUTO_VECTOR_H
30 operator T * ()
const {
return _p; }
50 void resize (
unsigned int newSize);
51 void erase (
size_t idx);
64 void assign (
size_t i, std::auto_ptr<T> p);
66 void insert (
size_t idx, std::auto_ptr<T> p);
71 T
const *
back ()
const {
return _arr.back (); }
75 typedef typename std::vector<T*>::iterator
iterator;
107 _arr.reserve (capacity);
119 _arr.push_back (ptr.get ());
126 assert (size () != 0);
127 T * p = _arr.back ();
129 return std::auto_ptr<T> (p);
152 assert (i < size ());
161 assert (i < size ());
162 if (_arr [i] != p.get ())
164 _arr [i] = p.release ();
170 assert (idx < size ());
174 _arr.erase (ToIter (idx));
180 assert (it < end ());
182 return _arr.
erase (it);
190 iterator pos = std::remove (begin (), end (), null);
191 _arr.resize (pos - begin ());
197 assert (it - begin () >= 0);
198 return static_cast<size_t> (it - begin ());
206 assert (it - begin () >= 0);
207 return static_cast<size_t> (it - begin ());
213 return begin () + idx;
233 if (newSize < size ())
234 std::for_each (ToIter (newSize), end (),
DeletePtr<T> ());
235 _arr.resize (newSize);
241 assert (idx <= size ());
242 _arr.insert (ToIter (idx), p.get ());