Обсуждение:Стандартная библиотека шаблонов
Эта статья тематически связана с вики-проектом «Информационные технологии», цель которого — создание и улучшение статей по темам, связанным с информационными технологиями. Вы можете её отредактировать, а также присоединиться к проекту, принять участие в его обсуждении и поработать над требуемыми статьями. |
Untitled[править код]
Добрый день, всем
К сожалению моя правка по поводу классификации контейнеров была отменена Gribozavr. Хотелось бы узнать, почему так произошло :)
Пока этого нет выскажу свои аргументы "за"
Хотя Б. Страуструп и является создателем C++, но нельзя ссылаться на его книжку как на первоисточник. Для этого есть специальный стандарт ISO/IEC 14882.
- Согласно стандарту хеш-таблицы не входят в STL (хотя они есть STLport)
По поводу priority_queue, queue и stack в Стандарте они определены как контейнеры-адаптеры. Сейчас в статье они вообще не упоминаются.
По поводу псевдоконтейнеров. Под ними понимаются шаблоны классов, похожие на стандартные контейнеры, но не удовлетворяющим каким-либо требованиям, предъявляемым к стандартным контейнерам.
С уважением, Войтеховский Алексей
- Вынужден извиниться перед вами! Я отменил правку не подумав. Да, ваша классификация намного лучше.
- PS. Подписывайтесь на страницах обсуждения, пожалуйста. (Для этого достаточно написать ~~~~) --gribozavr 16:12, 10 июля 2008 (UTC)
Дополнение статьи[править код]
Добрый день, всем
В настоящий момент статья про STL содержит не так много информации. Предлагаю дополнить ее следующими разделами:
- 1. Общая информация (уже есть)
- 2. История развития (уже есть)
- 3. Основные составляющие
- 3. Классификация контейнеров (уже есть)
- 4. Типы итераторов
- 5. Виды алгоритмов и функциональных объектов.
- 6. Потоки ввода/вывода
Voitalex 12:15, 11 июля 2008 (UTC)
- Я тут позволил себе наглость слегка отформатировать Ваш комментарий для улучшения читаемости...
- По поводу дополнения. Разумеется, эта статья явно недостаточно описывает предмет... Я бы даже сказал, страдает вопиющей незавершенностью, описав контейнеры и умолчав про алгоритмы.
- К Вашему списку я бы еще добавил строки и потоки ввода-вывода. Ну и те же контейнеры неплохо бы дополнить примерами, когда применение каждого из них наиболее целесообразно... если удастся найти источники — стандарт со Страуструпом тут не помощники...
Добрый день, всем
Спасибо Centurn за форматирование текста. Так выглядит гораздо лучше.
По поводу потоков ввода/вывода. Я могу ошибаться но, реализация потоков ввода/вывода не входит в STL.
Предлагаю обсудить следующее: "Стандартная библиотека шаблонов STL (англ. standard template library) — набор шаблонов функций и классов в языке C++, включающий в себя различные контейнеры данных (список, очередь, множество, отображение, хэштаблица, очередь с приоритетами) и базовые алгоритмы (сортировка, поиск)."
На мой взгляд определение слишком детализировано. Чтобы не быть голословным предложу свой вариант: "Стандартная библиотека шаблонов STL (англ. Standard Template Library) - набор согласованных обобщенных алгоритмов, контейнеров и средств доступа к их содержимому.
- Ну, стандарта у меня под рукой нет, но вот у дядюшки Страуструпа глава 21 «Потоки» относится к главе III «Стандартная библиотека», да и расположены они в пространстве std::, да и ести они везде, включая довольно древние компиляторы, да и «hello, world!» на C++ выводят в cout... Так что я б сказал, что потоки ввода-вывода в STL. Вот локализация там всякая может и нет... Впрочем, стандартной локализацией никто и не пользуется...
- По поводу определения — да, мне кажется, Ваш вариант звучит лучше. Я только не очень сообразил, что такое "и средств доступа к их содержимому". Я бы сказал "и различных вспомогательных классов". А то std::max или auto_ptr — это не средство доступа, да и mem_fun/bind2nd тоже не особо. Centurn l 20:04, 14 июля 2008 (UTC)
Добрый день, всем
Посмотрев на то, что я написал ранее, со свежей головой, понял, что написал непонятно что :) Спасибо Centurn за поправку. Потоки ввода/вывода входят в STL.
По поводу определения. Под фразой "и средств доступа к их содержимому" я имел в виду итераторы. Но как правильно заметил Centurn нигде в не освещены вспомогательные функции. Предлагаю "склеенный" вариант:
"Стандартная библиотека шаблонов STL (англ. Standard Template Library) - набор согласованных обобщенных алгоритмов, контейнеров, средств доступа к их содержимому и различных вспомогательных функций.
Voitalex 10:07, 15 июля 2008 (UTC)
- Ну, такая формалировка мне нравится.
- Эх, что-то страница обсуждения становится больше самой статьи... :) Centurn l 19:11, 15 июля 2008 (UTC)
На мой взгляд, это правильно, что страница "Обсуждение" становится все больше и больше. Лучше "отфильтровать" материал здесь, чем плодить ненужные версии статьи.
Предлагаю следующий раздел под названием "Структура библиотеки"
"Структура библиотеки"
В библиотеке выделяют пять основных компонентов:
- 1. Адаптер (adaptor) - адаптация компонентов для обеспечения различного интерфейса.
- 2. Алгоритм (algorithm) - определение вычислительной процедуры.
- 3. Итератор (iterator) - обеспечение средств доступа к содержимому контейнера.
- 4. Контейнер (container) - хранение набора объектов в памяти.
- 5. Функциональный объект (functor) - сокрытие функции в объекте для использования другими компонентами.
Разделение позволяет уменьшить количество компонентов. Например, вместо написания отдельной функции поиска элемента для каждого типа контейнера обеспечивается единственная версия, которая работает с каждым из них, пока соблюдаются основные требования.
- Ну, если бы тут все обсуждали перед исправлением, сейчас было бы не 300 тысяч статей, а эдак 15 тысяч. Здесь хорошая система контроля версий, и всегда могут поправить. Так что спрашивать действительно необходимо только, когда есть какие-то сомнения, особенно когда чужое что-то изменяется... А тут явно дополнять статью надо. В таких случаях просто вписывается по своему разумению, а если кому-то не нравится, вот тогда можно и обсудить... Centurn l 20:33, 17 июля 2008 (UTC)