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

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

Войти
Регистрация
Восстановить пароль
 
dimcoder
Полярный
458 / 431 / 67
Регистрация: 11.09.2011
Сообщений: 1,129
#1

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

22.08.2016, 09:54. Просмотров 163. Ответов 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++
Всем привет, Появился вопрос по поводу обращения к вектору полученному через указатель. Выглядит так: Передаю адрес вектора в...

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

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

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

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

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

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

Поиск по вектору не работает - C++
Есть класс и контейнер-вектор, надо отсортировать контейнер вектор,выполнить поиск #include <iostream> #include <vector> #include...

Вопрос по вектору string'ов - C++
Не совсем представляю как работает вектор стрингов std::vector<std::string> texts; Вектор по стандарту располагается в едином куске...

Поиск строки по вектору - C++
Добрый день. Помогите разобраться с проблемой пожалуйста: я перегоняю данные из бинарного файла в вектор (так нужно по заданию), затем мне...

Поиск, Сортировка по Вектору в с++ - C++
Не могу разобраться как обратится к элементу класса например name. в векторе groupArray. Из за этого не могу реализовать поиск по имени,...

Как обращаться к вектору из структуры - C++
Я записала в вектор структуру: struct Sotrudnic { char surname, name, patronymic, propiska, pol, status; int passport, age,...


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

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



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

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

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

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

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

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

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