То, почему некоторые библиотеки реализуют основные данные, должно структурировать? [закрытый]

5
задан Brian Tompsett - 汤莱恩 8 November 2015 в 22:46
поделиться

4 ответа

Отображение типов STL в заголовках в некоторых случаях может привести к неприятным и неприятным временам компоновки. В больших проектах это может быть достаточной причиной, чтобы «спрятать» их за проприетарным API.

4
ответ дан 18 December 2019 в 07:54
поделиться

Реализация STL различается на каждой платформе, поэтому раскрытие STL в библиотеке будет иметь риск, например, если вы выставите std :: map в своей библиотеке, поскольку вы можете не экспортировать std :: map из вашей библиотеки, ваша библиотека будет вынуждена использовать реализацию std :: map от пользователей вашей библиотеки (той, которая загружает вашу библиотеку), это вызовет некоторую несовместимость, такую ​​как другая версия реализации STL, другой STL класс распределителя и некоторые проблемы, специфичные для платформы.

4
ответ дан 18 December 2019 в 07:54
поделиться
  1. Одна из причин может заключаться в том, что контейнеры STL не предназначены для использования в качестве базовых классов - Проблемы проектирования STL Википедия

  2. В STL или НЕ STL, вот в чем вопрос - SO

0
ответ дан 18 December 2019 в 07:54
поделиться

C++ как язык существовал много лет до стандартизации STL и еще несколько лет до последовательной реализации STL во всех компиляторах. Библиотеки, изначально написанные в это время, возможно, не хотели полагаться на STL, чтобы быть более переносимыми.

Еще одна причина, связанная с переносимостью, - встроенное использование. Qt, например, повторно реализует большую часть STL, потому что приложения Qt иногда нацелены на встроенные платформы (например, смартфоны Nokia), которые могут не иметь доступной реализации STL.

12
ответ дан 18 December 2019 в 07:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: