Обсуждение:Стандартная библиотека шаблонов

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Добрый день, всем

К сожалению моя правка по поводу классификации контейнеров была отменена 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 l 20:55, 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)[ответить]