На этом шаге мы рассмотрим функции, которые можно использовать для работы с неинициализированной памятью.
На этом шаге подробно описаны вспомогательные функции для работы с неинициализированной памятью.
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. Надеемся, что изложенный материал будет Вам полезен.