Форум программистов, компьютерный форум CyberForum.ru

uninitialized_fill() - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Проверить, является ли введенное число палиндромом http://www.cyberforum.ru/cpp-beginners/thread962676.html
Проверьте, является ли введенное число палиндромом. Например, 12321, 2442 - палиндромы. В С++.
C++ safe_insert() для map Привет!!! Есть задачка: "Напишите усовершенствованный вариант safe_insert() исключительно для ассоциативных контейнеров. Используйте traits для написания safe_insert(), который автоматически выбирает оптимальный вариант для контейнера." http://www.cyberforum.ru/cpp-beginners/thread962672.html
C++ Вычислить сумму первых n целых положительных чисел. В С++
Вычислить сумму первых n целых положительных чисел. В С++
Запишите функцию для вычисления произведения целых чисел из диапазона от а до в. найдите произведение чисел, диапазон ввести с клавиатуры. В С++ C++
Запишите функцию для вычисления произведения целых чисел из диапазона от а до в. найдите произведение чисел, диапазон ввести с клавиатуры. В С++
C++ вычисления факториала http://www.cyberforum.ru/cpp-beginners/thread962657.html
Составить программу для вычисления факториала числа. Найдите факториалы 4, 7, 10. В С++
C++ Матрица в C++ Задана матрица А(5,5). Если в строке есть хотя бы один нуль, то заменить эту строку единицами. подробнее

Показать сообщение отдельно
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
26.09.2013, 13:50  [ТС]     uninitialized_fill()
Цитата Сообщение от castaway Посмотреть сообщение
Она не вызывает деструктор.
Деструктор вызывается в блоке catch(...) ( (&*q)->~T();//вызываем деструктор)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
template<class For, class T>
void uninitialized_fill(For beg, For end,  T& x)
{
    For p;
    try
    {
        for(p=beg;p!=end;++p)
            new (static_cast<void*>(&*p))T(x);//создаем копию х в *p (параграф 10.4.11)
        //&*p мы получаем адресс разыменованого элемента с целью получения указателя.
    }
    catch(...)
    {
        for(For q=beg;q!=p;++q)
        {
            (&*q)->~T();//вызываем деструктор
        }
        throw;
    }
}
 
Текущее время: 08:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru