Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.57/47: Рейтинг темы: голосов - 47, средняя оценка - 4.57
43 / 43 / 13
Регистрация: 17.05.2011
Сообщений: 162

Обработка out_of_range

25.09.2013, 18:34. Показов 9458. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.
Имеетмся матрица, реализованная как std::vector <std::vector <int>>. Мне нужно найти сумму всех соседних элементов для каждого элемента матрицы. В общем случае это сумма 8 элементов, но для граничных элементов это количество меньше. Как мне написав алгоритм для общего случая обрабатывать выход за границу, так чтобы при выходе за границу просто сситались след элементы.
Знаю есть vector <T>::at () , но как им пользоваться не понимаю.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.09.2013, 18:34
Ответы с готовыми решениями:

Std::out_of_range
Доброго всем времени суток! Никак не пойму в чем проблема.. обрабатываю большой файл, примерно такой: ...

Выскакивает out_of_range
Добрый День! Не пойму в чем проблема, дальше return false не уходит, вылетает окно &quot;Необработанное исключение в &quot;0x75a2d36f&quot; в...

Исключение Microsoft C++: std::out_of_range
Вызывается исключение в функции, не пойму в чем дело, помогите объяснить, только начала работу с векторами #include &quot;pch.h&quot; ...

26
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
26.09.2013, 12:55
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Peperovich Посмотреть сообщение
Перегрузка оператора [] для std::vector? Для него же есть своя реализация перегрузки []. Какая из них будет вызываться?
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
#include <iostream>
#include <vector>
 
template <class T>
class A : public std::vector <T> {
public:
    T operator [] ( int index ) {
        if ( index < 0 || index >= static_cast<int>(std::vector<T>::size()) ) {
            std::cout << "out of range: ";
            return 0;
        }
        std::cout << "ok: ";
        return (*(std::vector<T> *)this)[index];
    }
};
 
int main()
{
    A <int> a;
    a.push_back( 123 );
    a.push_back( 200 );
    a.push_back( 500 );
    a.push_back( 9999 );
 
    std::cout << a[-1] << std::endl; // out of range: 0
    std::cout << a[ 0] << std::endl; // ok: 123
    std::cout << a[ 3] << std::endl; // ok: 9999
    std::cout << a[ 4] << std::endl; // out of range: 0
}
1
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
26.09.2013, 12:56
Peperovich, ну и как ты выйдешь вообще брейком вот код:
C++
1
2
3
4
5
for(int i=0;i<10;i++)
for(int j=0;j<10;j++)
for(int k=0;k<10;k++)
if(какое то условие)//нужно выйти полностью из всех циклов
break;//ты выйдешь токо из одного цикла.
тут можно переменную флаг использовать, можно goto, можно исключение и исключение красивый легко понятный вариант.
0
43 / 43 / 13
Регистрация: 17.05.2011
Сообщений: 162
26.09.2013, 13:04  [ТС]
Наследование сильная вещь =) Все больше и больше в этом убеждаюсь.

Добавлено через 4 минуты
Цитата Сообщение от ninja2 Посмотреть сообщение
Peperovich, ну и как ты выйдешь вообще брейком вот код:
C++
1
2
3
4
5
for(int i=0;i<10;i++)
for(int j=0;j<10;j++)
for(int k=0;k<10;k++)
if(какое то условие)//нужно выйти полностью из всех циклов
break;//ты выйдешь токо из одного цикла.
тут можно переменную флаг использовать, можно goto, можно исключение и исключение красивый легко понятный вариант.
Из всех циклов одним break понятно, что не выйдешь. А goto перестал пользоваться еще на Pascale. Лучше уж флаг.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
26.09.2013, 13:08
Если позволяет ситуация то можно сделать просто.
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
 
int main()
{
    for(int i=0;i<10;i++)
    for(int j=0;j<10;j++)
    for(int k=0;k<10;k++) {
        std::cout << "i=" << i << ", j=" << j << ", k=" << k << std::endl;
        if ( k == 5 ) i = j = k = 10;
    }
}
0
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
26.09.2013, 13:12
Цитата Сообщение от Peperovich Посмотреть сообщение
Из всех циклов одним break понятно, что не выйдешь. А goto перестал пользоваться еще на Pascale. Лучше уж флаг.
а если этих циклов будет 10, ты что в каждом будешь проверять флаг? Мне кажется более компактно будет использовать исключение, код не замусорен будет и наглядно понятнее программа становиться.
0
43 / 43 / 13
Регистрация: 17.05.2011
Сообщений: 162
26.09.2013, 13:16  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
 
int main()
{
    int flag=0;
    for(int i=0;i<10 && flag==0;i++)
    for(int j=0;j<10 && flag==0;j++)
    for(int k=0;k<10 && flag==0;k++) {
        std::cout << "i=" << i << ", j=" << j << ", k=" << k << std::endl;
        if ( k == 5 ) flag=1;
    }
}
0
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
26.09.2013, 13:19
Peperovich, да можно и так.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.09.2013, 13:19

Runtime ошибка - terminate called after throwing an instance of 'std::out_of_range'
Пишу что-то вроде компилятора. Так как никакой литературы по созданию компилятора не читал в моём коде появляються кучи Костылей и...

Unhandled exception at at 0x75E717D2 in ConsoleApplication24.exe: Microsoft C++ exception: std::out_of_range at memory l
Здравствуйте, помогите пожалуйста, при проходе через последний цикл выдаёт вот такую ошибку: Unhandled exception at at 0x75E717D2 in...

Как в MS Visual Studio отключить сообщение "std::out_of_range at memory location"?
это сообщение появляется, в моем случае, когда считываются символы не входящие в нужный диапазон по аски коду. в принице программа и...

out_of_range exaptions и условные операторы
Меня интересует следущее: почему этот код не выдает ошибок типа &quot;индекс вне границ массива&quot; if (a &gt; 0) something(); Работа...

Std::out_of_range
здравствуйте. не могу понять, из за чего возникают ошибки. вот код: void Parser::on_btnStart_clicked() { QUrl...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru