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

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

Войти
Регистрация
Восстановить пароль
 
dimcoder
Полярный
451 / 424 / 66
Регистрация: 11.09.2011
Сообщений: 1,124
#1

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

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

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

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

C++ Вопрос по вектору string'ов
C++ Использование массива индексов при сортировке
C++ Поиск строки по вектору
CreateDispatch не работает при доступе к контактам Outlooka C++
Отказ в доступе при сохранении файла C++
C++ Можно ли применить find_if к вектору
C++ Обращение к вектору полученному через указатель
C++ Можно ли значение вектора A передать вектору B через swap?
Поймать exception, который вылетает при доступе к элементу пустого вектора C++
Ошибка при доступе к полям структуры C++
C++ Поиск по вектору не работает
C++ Поиск, Сортировка по Вектору в с++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
hoggy
6147 / 2513 / 442
Регистрация: 15.11.2014
Сообщений: 5,561
Завершенные тесты: 1
22.08.2016, 10:16     Проверка индексов при доступе к вектору через [] #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от dimcoder Посмотреть сообщение
с дилеммой: использовать at или operator [] при работе с std::vector или подобными вещами. Для релиза то явно лучше [], а вот для ловли багов лучше at.
здесь нет дилемы. используйте []



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

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

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

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

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

6.
PROFIT!!!!????
dimcoder
Полярный
451 / 424 / 66
Регистрация: 11.09.2011
Сообщений: 1,124
22.08.2016, 13:03  [ТС]     Проверка индексов при доступе к вектору через [] #3
Цитата Сообщение от hoggy Посмотреть сообщение
смотрим call stack.
видим вызовы всех функций.
Да, это мне и надо видимо. Вот и дебаггер придется осваивать какой-то. Спасибо!
Yandex
Объявления
22.08.2016, 13:03     Проверка индексов при доступе к вектору через []
Ответ Создать тему
Опции темы

Текущее время: 01:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru