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

safe_insert() для map - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вычислить сумму первых n целых положительных чисел. В С++ http://www.cyberforum.ru/cpp-beginners/thread962670.html
Вычислить сумму первых n целых положительных чисел. В С++
C++ Запишите функцию для вычисления произведения целых чисел из диапазона от а до в. найдите произведение чисел, диапазон ввести с клавиатуры. В С++ Запишите функцию для вычисления произведения целых чисел из диапазона от а до в. найдите произведение чисел, диапазон ввести с клавиатуры. В С++ http://www.cyberforum.ru/cpp-beginners/thread962665.html
вычисления факториала C++
Составить программу для вычисления факториала числа. Найдите факториалы 4, 7, 10. В С++
Матрица в C++ C++
Задана матрица А(5,5). Если в строке есть хотя бы один нуль, то заменить эту строку единицами.
C++ Матрица. Поменять местами первую с той строкой, где находится минимальный элемент http://www.cyberforum.ru/cpp-beginners/thread962652.html
Ребят помогите решить задачку! Задана матрица В(4,4). Если максимальный элемент матрицы равен сумме элементов первой строки, то поменять местами первую с той строкой, где находится минимальный элемент.
C++ Напишите варианты библиотечных функций strncpy, strncat и strncmp вот такая задача, Напишите варианты библиотечных функций strncpy, strncat и strncmp, которые оперируют с первыми символами своих аргументов, число которых не превышает n. Например, strncpy(t, s, n) копирует не более n символов строки t в s. Полные описания этих функций содержатся в приложении В. Добавлено через 8 минут можно только функцию strncpy подробнее

Показать сообщение отдельно
ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
26.09.2013, 13:09  [ТС]     safe_insert() для map
Цитата Сообщение от _ Посмотреть сообщение
что не получается?
Да вообще не пойму внутрянку как наченить, я просто сделал для галочки
C++
1
2
3
4
5
template<class C,class Iter>
void safe_insert(C& c, Iter begin, Iter end)
{
    c.insert(begin,end);
}
Но это не правильно, нужно как то сделать с использованием <iterator> каких то видимо алгоритмов стл. Ну и конечно использовать полную безопасность - дать сильную гарантию безопасности для исключений, а это значит что при неудаче операции, передаваемая ассоциативная последовательность должна остаться неизмененной. Вообщем думайте господа.
Вообще можно так сделать примерно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
template<class C,class Iter>
void safe_insert(C& c, Iter begin, Iter end)
{
  C temp(c);//копия объекта
  try
  {
    c.insert(begin,end);
  }
  catch(...)
  {
    //при неудаче возвращаем назад
     с=temp;
  }
}
Но тут видимо мб и будет сильная гарантия хз. но мне кажется тоже сильной не будет, а вдруг конструктор копирования сгенерирует исключение, ну в принципе конструктор копирования с сильной гарантией он не повредит копируемый объект, просто если в блоке
C++
1
2
3
4
5
catch(...)
  {
    //при неудаче возвращаем назад
     с=temp;
  }
конструктор копирования сгенерирует исключение, то 100% потеря данных будет. Вообщем сильную гарантию дать нельзя.
 
Текущее время: 02:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru