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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
dimcoder
Полярный
466 / 439 / 68
Регистрация: 11.09.2011
Сообщений: 1,141
#1

Проверка индексов при доступе к вектору через [] - C++

22.08.2016, 09:54. Просмотров 179. Ответов 2
Метки нет (Все метки)

При написании кода сталкиваюсь с дилеммой: использовать at или operator [] при работе с std::vector или подобными вещами. Для релиза то явно лучше [], а вот для ловли багов лучше at. Но есть вариант лучше: использовать assert'ы внутри [], которые будут отключаться при релизе. Можно ли включить такой функционал в GCC (MinGW)? И если нет, то может есть другой вариант которого я не вижу?

Добавлено через 6 минут
А все, нашел, надо компилировать с D_GLIBCXX_DEBUG. Выдавалось бы еще место вызова где был выход за рамки, а не просто ошибка, было бы вообще замечательно.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.08.2016, 09:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проверка индексов при доступе к вектору через [] (C++):

Обращение к вектору полученному через указатель - C++
Всем привет, Появился вопрос по поводу обращения к вектору полученному через указатель. Выглядит так: Передаю адрес вектора в...

Можно ли значение вектора A передать вектору B через swap? - C++
А возможно ли такое сделать через swap: значение вектора A передать вектору B, при этом у вектора A должно остаться свое значение. ...

Ошибка при доступе к полям структуры - C++
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int error C2679: binary '=' : no operator found...

Отказ в доступе при сохранении файла - C++
Установил программу, в ее основной папке открыл и изменил файл, но при сохранении пишет "Отказано в доступе" . Как создатели программы...

CreateDispatch не работает при доступе к контактам Outlooka - C++
Вообще, я пытаюсь получить доступ к контактам outlook'a. Нашел код в Интернете: if(!da.CreateDispatch('Outlook.Application')) ...

Ошибка сегментирования при доступе к переменным класса - C++
Имею: - CentOS - gcc 4.8 - Собственный класс - В этом классе есть объект = указатель на другой класс (назовем его log). - В...

2
hoggy
6764 / 2949 / 507
Регистрация: 15.11.2014
Сообщений: 6,627
Завершенные тесты: 1
22.08.2016, 10:16 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от dimcoder Посмотреть сообщение
с дилеммой: использовать at или operator [] при работе с std::vector или подобными вещами. Для релиза то явно лучше [], а вот для ловли багов лучше at.
здесь нет дилемы. используйте []



Цитата Сообщение от dimcoder Посмотреть сообщение
Выдавалось бы еще место вызова где был выход за рамки
1.
запускаемся под отладкой

2.
подрываемся на ассерте.

3.
так как запуск был под отладкой,
то на ассерте срабатывает бряк

4.
смотрим call stack.
видим вызовы всех функций.

5.
и подымаемся по стеку на уровень выше
и видим код вызова оператор[].

6.
PROFIT!!!!????
1
dimcoder
Полярный
466 / 439 / 68
Регистрация: 11.09.2011
Сообщений: 1,141
22.08.2016, 13:03  [ТС] #3
Цитата Сообщение от hoggy Посмотреть сообщение
смотрим call stack.
видим вызовы всех функций.
Да, это мне и надо видимо. Вот и дебаггер придется осваивать какой-то. Спасибо!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.08.2016, 13:03
Привет! Вот еще темы с ответами:

Поймать exception, который вылетает при доступе к элементу пустого вектора - C++
Подскажите как правильно поймать exception, который вылетает при доступе к 1 элементу пустого вектора. #include <iostream> #include...

Использование массива индексов при сортировке - C++
Задали задачку отсортировать обычный одномерный массив. Так же, нужно использовать массив индексов, чтобы показать, как отсортирован...

Альтернатива вектору - C++
Добрый день. Такая проблема. имеется модуль сопряжения, который соединяет ддлки от 2005 и 2010 студии. там есть некий класс, который...

Сериализация через SaveFileDialog. Ошибка при доступе к файлу - C#
Всем привет, проблема с доступом к файлу: Создаем кнопку сериализации в Windows Form: К кнопке привязываем код: ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.