Безопасность Standart Template Library [требует правки]

281
01 февраля 2018, 18:38

Слышал мнение, что STL сама по себе не безопасна и использовать ее в своих проектах не стоит. Хочется услышать мнение профессионалов об этом мнении. Есть ли проблемы, связанные с её использованием?

Answer 1

Это мнение родом из тех времен, когда шаблоны были новшеством, а каждый разработчик stl считал своим долгом добавить в свою реализацию что-нибудь эдакое. Вот, например, что пишет Скотт Майерс в Effective STL:

... в области использования STL возникали чисто практические проблемы, на которые было невозможно закрыть глаза. Адаптация любых программ STL, за исключением простейших, была сопряжена с множеством проблем, что объяснялось не только различием в реализациях, но и разным уровнем поддержки шаблонов компиляторами. Учебники по STL были редкостью, поэтому достижение "дао программирования STL" оказывалось задачей непростой. А как только программист справлялся с этой трудностью, возникала другая - поиск достаточно полной и точной справочной документации...

Книга отличная, кстати, рекомендую. Но ей, на секундочку, 17 лет. У вас же нет сейчас проблем с поддержкой шаблонов компиляторами? Или с поиском документации? Или с учебниками? В IT все меняется очень быстро(посмотрите хоть на javascript, у них там каждый день новый фреймворк).

Когда в следующий раз встретите такое мнение, узнайте из какого оно года.

Answer 2

STL реально небезопасна. И причина не в шаблонах а в провальной устаревшей концепции, отвратительной архитектуре библиотеки и непродуманных интерфейсах превращающих использующий ее код в плохо читабельный говнокод. Одного этого достаточно чтобы считать ее небезопасной. Ну и как бы не видел чтобы ведущиие производители фреймверков пользовали ее в своих продуктах. Что Майкрософт что Борланд/Эмбаркадеро что Qt пользуют свои аналоги которые гораздо грамотнее сделаны и гораздо удобнее в использовании.

READ ALSO
Стили к собственному виджету - C++ Qt

Стили к собственному виджету - C++ Qt

Всем привет! Столкнулся с такой трудностью:

364
QLabel не заполняется из другого класса

QLabel не заполняется из другого класса

У меня приложение с картой, при нажатии на карту я рисую Waypoint и сохраняю его в мой struct WaypointData

298
Ограничения двумерного vector'а

Ограничения двумерного vector'а

Подскажите, пожалуйста, есть ли у двумерного vector'а ограничение по размеруИ, если да, то какое оно в обе стороны

276
GetAdaptersAddresses и выделение памяти

GetAdaptersAddresses и выделение памяти

Итак имеем функцию GetAdaptersAddresses, которая возвращает список сетевых интерфейсов в системеОписание ф-ции:

339