Я работаю над проектом (поселенцы 2.5 возвращаются к корням именно), который страдает некоторыми проблемами. Я надеюсь, что смогу решить некоторые из них, используя только stl-контейнеры и проверку границ.
Так можно ли как-то использовать проверку границ в контейнерах STL также в режиме выпуска? Таким образом, мы могли бы использовать (менее производительную) версию, которая делает их и вылетает / выдает ошибку?
Сервер сборки использует MinGW для кросс-компиляции из Linux в Windows и Apple.
Редактировать: [] -оператор используется исключительно. Переход на .at () потребовал бы большого действия поиска и замены, которое в какой-то момент должно быть отменено. Лучше всего, если есть определение или что-то, что переключает [] -behaviour на .at ()
Первый подход
Вы можете положиться на исключения для проверки проверки границ с использованием контейнера STL. Это включено как в режиме отладки, так и в режиме выпуска.
Например станд :: вектор :: на выбрасывает исключение вне диапазона, если находится за пределами.
Второй подход
Если вы используете оператор [] и не хотите менять свой код, вы можете включить _GLIBCXX_DEBUG
флаг для обязательной проверки.