На этом шаге мы рассмотрим функции, которые можно использовать для работы с неинициализированной памятью.
На этом шаге подробно описаны вспомогательные функции для работы с неинициализированной памятью.
void uninitialized_fill (ForwardIterator beg, ForwardIterator end, const T& value)
namespace std { template <class ForwIter, class T> void uninitialized_fill(ForwIter beg, ForwIter end, const T& value) { typedef typename iterator_traits<ForwIter>::value_type VT; ForwIter save(beg); try { for (; beg!=end; ++beg) { new (static_cast<void*>(&*beg))VT(value); } } catch (...) { for (; save!=beg; ++save) { save->~VT(); } throw; } } }
void uninitialized_fill_n (ForwardIterator beg, Size num, const T& value)
namespace std { template <class ForwIter, class Size, class T> void uninitialized_fill_n (ForwIter beg, Size num, const T& value) { typedef typename iterator_traits<ForwIter>::value_type VT; ForwIter save(beg); try { for (; num--; ++beg) { new (static_cast<void*>(&*beg))VT(value); } } catch (...) { for (; save!=beg; ++save) { save->~VT(); } throw; } } }
void uninitialized_copy (InputIterator sourceBeg, InputIterator sourceEnd,
ForwardIterator destBeg)
Мы закончили изучение возможностей библиотеки STL. Надеемся, что изложенный материал будет Вам полезен.