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

Ошибка в исключениях - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Данна непустая последовательность целых чисел http://www.cyberforum.ru/cpp-beginners/thread417820.html
Данна непустая последовательность целых чисел, оканчивающаяся нулём. найти количество всех чисел последовательности
C++ Известны оценки двух учеников по четырём предметам Определить сумму оценок каждого ученика Известны оценки двух учеников по четырём предметам Определить сумму оценок каждого ученика http://www.cyberforum.ru/cpp-beginners/thread417817.html
C++ Вычеслить столбиком
Вычеслить Сталбиком следующие числа 2,2, 2,4, 2,6, ..., 4,2.
Напечатать числа следующим образом C++
Напечатать числа следующим образом 11 11.4 11 11.4 ... 25 25.4
C++ Дано четырёхзначное число http://www.cyberforum.ru/cpp-beginners/thread417805.html
Дано четырёхзначное число Определить кратна ли троём сумма его цифр
C++ даны два различных веществынных числа даны два различных веществынных числа Определить какое из них меньше подробнее

Показать сообщение отдельно
fasked
Эксперт С++
4942 / 2522 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
26.12.2011, 16:44
Sylar9, метод at() бросает исключение в случае, если происходит попытка обращению к элементу по индексу, который выходит за границы массива.
Банальный пример:
C++
1
2
int arr[5] = { 0 };
arr[10] = 0; // выход за границу массива
Так вот метод at() как раз такие случаи и отлавливает.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <stdexcept>
#include <iostream>
#include <vector>
 
using namespace std;
 
int main()
{
   // Создание вектора из двух элементов
   vector<int> v(2);
   
   try {
      // Легальное обращение к элементу вектора
      v.at(0) = 1;
   }
   
   // Исключение не будет брошено
   catch (const out_of_range &e) {
      cerr << "never be executed : " << e.what() << endl;
   }   
   
   try {
      // Обращение к несуществующему элементу - выход за границу массива
      // т.е. i >= v.size()
      v.at(10) = 1;
   }
        
   // Исключение будет брошено,
   // а обращение к неверному адресу предотвращено
   catch (const out_of_range &e) {
      cerr << "out of range : " << e.what() << endl;
   }
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru