Int main(){
std::list<int> li(6);
std::iota(li.begin(), li.end(), 0);
// Находим значение 3 в списке
auto it{ find(li.begin(), li.end(), 3) };
// Вставляем 8 прямо перед 3.
li.insert(it, 8);
for (int i : li) // цикл for с итератором
std::cout << i << ' ';
std::cout << '\n';
return 0;
}
Этот код напечатает значения
0 1 2 8 3 4 5
Алгоритм замены replace
replace модифицирует значения элементов контейнера. Пример программы, заменяющий в списке все -1 на 1:
#include <list>
#include <algorithm>
Int main() {
list <int> A;
list <int>::iterator it; int n,x;
cin>>n;
for(int i=0;i<n;i++) {
cin>>x;
A.push_back(x);
}
replace(A.begin(), A.end(), -1, 1);
for(it=A.begin();it!=A.end();it++) {
cout<<*it<<" ";
}
return 0;
}
29. Обработка исключительных ситуаций. Механизм обработки исключений в С++ (try,catch,throw). Назначение и использование пример.
Когда во время выполнения программы происходит ошибка, генерируется исключение, которое можно перехватить и обработать. Если его не обработать, то программа завершится с ошибкой. Исключительными ситуациями может быть ввод некорректной информации, попытка читать и несуществующего файла, деление на ноль и т.д..
Возникновение некорректной ситуации фиксируется в одном месте программы, а ее исправление необходимо осуществлять в другом. Для обработки таких ситуаций применяют механизм обработки исключений.
try{
инструкции, которые могут вызвать исключение
}
catch(объявление_исключения){
обработка исключения
}
#include >iostream<
double divide(int a, int b){
if (b)
return a / b;
throw "Division by zero!";
}
Int main(){
int x{500};
int y{};
try{
double z {divide(x, y)};
std::cout << z << std::endl;
}
catch (const char* error_message){
std::cout << error_message << std::endl;
}
std::cout << "The End..." << std::endl;
}
30. Перехват исключений и раскрутка стека.
Обработка исключений – это механизм, позволяющий двум независимо разработанным программным компонентам взаимодействовать в аномальной ситуации, называемой исключением.
В языке C++ исключения обрабатываются в предложениях catch. Когда какая-то инструкция внутри try-блока возбуждает исключение, то просматривается список последующих предложений catch в поисках такого, который может его обработать.
Процесс, в результате которого программа последовательно покидает составные инструкции и определения функций в поисках предложения catch, способного обработать возникшее исключение, называется раскруткой стека.