Страница 1 из 2

Начала STL и контейнеры C++

Добавлено: 13 фев 2016, 17:48
Olej
Это цикл небольших (2-3-4 стр.) заметок в тему "Начала STL и контейнры C++" (это же и ссылка в блог, где вы их свободно найдёте :lol: ).
На сегодня их 6 шт.
Но в итоге, если не надоест, планируется 10 или чуть больше.

Это написано по случаю... Для народа самого начального уровня знакомства (никакого ;-) ).
Есть замечательная книга на предмет STL - Скотт Мейерс ... и ничего больше не надо.
Но ... я это написал:
а). по просьбе + максимально компактно ...
б). повязав аналогии с массивами ...
в). с учётом новых стандартов С99 и С++11 ... а это здорово влияет ;-) (перевод Мейерса вышел всё-таки аж в 2002 году)
г). под все рассуждения были написаны новые тестовые задачи, которые, как мне кажется, наилучшим образом показывают и объяснют STL ... при их максимальной краткости.

Re: Начала STL и контейнры C++

Добавлено: 15 фев 2016, 12:49
Olej
Olej писал(а): На сегодня их 6 шт.
Уже 9. ;-)

Re: Начала STL и контейнры C++

Добавлено: 20 фев 2016, 14:04
Olej
Olej писал(а):Это цикл небольших (2-3-4 стр.) заметок в тему "Начала STL и контейнры C++" (это же и ссылка в блог, где вы их свободно найдёте :lol: ).
Поскольку блог этот оказался, в смысле работы редактора текста сообщений, полным говном, и опасаясь за сохранность ссылок заметок даже для самого себя, любимого, я уношу ссылки из блога, временно пока (???) сюда.
Пока идёт наполнений объёма.
Итак...
Это вот такой цикл коротеньких заметок по массивам C & C++, контейнерам STL, использованию их с применением новых синтаксических конструкций стандартов последнего времени: C99 и C++11 - всё это там сильно переплетается ... ну и всяких сопутствующих вопросов.

Этот цикл заметок, первоначально, появился по просьбе одного из сайтов, по обучению C++ начального уровня ... для пионеров, школьников и других нерадивых студентов... Но со временем заметки стали обрастать подробностями, а заказчики мягко выражать неудовольствие, что всё это становится слишком длинно и заумно. Упрощать описание до уровня "на пальцах" не хочется, но и потерять сделанное жалко, независимо от того, опубликует ли это обучающий сайт и в каком виде. Тем более, что материал стал обрастать интересными подробностями (жить своей жизнью), особенно на стыке с выразительными средствами стандартов C99 и C++11, позволяющих значительно упростить использование. А в литературе этого не найти, потому что очень свежие вещи.В итоге, решил я это всё хозяйство задублировать сюда в блог. Тем более, что всплывают всякие нетривиальные детали, каждая из частей обрастает обновлениями (и ещё будут), и это уже далеко не тот текст, который появился первоначально. Может кому-то ещё это покажется интересным.

Естественно, все заметки сопровождаются короткими примерами иллюстрирующего кода. Весь код написан "с нуля" под эти тексты. Поскольку кода не много, все примеры кода, ко многим частям собственно заметок, собраны в один архив. Но соответствие кода частям текста очень легко восстановить по именам файлов примеров, которые фигурируют в тексте. Архив кодов можете взять на Yandex или на Google (архив будет обновляться, но эти ссылки будут корректироваться на актальную версию).

Вопрос (спрашивают): почему названия, ссылки и даты последних редакций там сильно "пляшут", даже давно размещённые части, из самых первых?
Ответ: потому, что, идя навстречу пожеланиям трудящихся, я сделал то, чего никогда не делаю - выверил и скорректировал коды примеров в виртуальной машине с Windows 7, в среде IDE Code::Blocks 2013.

А сами тексты - вот они (ссылки бeдут помещаться и обновляться по мере выверки и размещения):
Далее ... архивы примеров кодов: на Yandex и на Google - свежак по состоянию на 20.02.

Re: Начала STL и контейнры C++

Добавлено: 20 фев 2016, 14:29
Olej
Olej писал(а):Далее ... архивы примеров кодов: на Yandex и на Google - свежак по состоянию на 20.02.
Теперь по самим текстам, по частям:

Массивы со статической и динамической размерностью. Часть 1
Редакция от 19.02.2016, ссылка на Yandex и на Google

Контейнеры STL. Часть 2
Редакция от 19.02.2016, ссылка на Yandex и на Google

Контейнеры STL: vector. Часть 3
Редакция от 19.02.2016, ссылка на Yandex и на Google

Контейнеры STL: list. Часть 4
Редакция от 19.02.2016, ссылка на Yandex и на Google

Классы string и wstring. Часть 5
Редакция от 19.02.2016, ссылка на Yandex и на Google

Ассоциативные контейнеры STL. Часть 6
Редакция от 19.02.2016, ссылка на Yandex и на Google

Контейнеры STL: map. Часть 7
Редакция от 19.02.2016, ссылка на Yandex и на Google

Контейнеры STL: multimap. Часть 8
Редакция от 19.02.2016, ссылка на Yandex и на Google

Контейнеры STL: set и multiset. Часть 9
Редакция от 19.02.2016, ссылка на Yandex и на Google

Алгоритмы. Часть 10
Редакция от 19.02.2016, ссылка на Yandex и на Google

Функциональные объекты. Часть 11
Редакция от 19.02.2016, ссылка на Yandex и на Google

Re: Начала STL и контейнры C++

Добавлено: 20 фев 2016, 19:08
Olej
Olej писал(а):
Вопрос (спрашивают): почему названия, ссылки и даты последних редакций там сильно "пляшут", даже давно размещённые части, из самых первых?
Ответ: потому, что, идя навстречу пожеланиям трудящихся, я сделал то, чего никогда не делаю - выверил и скорректировал коды примеров в виртуальной машине с Windows 7, в среде IDE Code::Blocks 2013.
На этом месте стоило бы остановиться подробнее...
Библиотека шаблонных классов C++ пришла из Boost, куда она пришла, соответственно, из STL ... начиная от фирмы HP.
Эта часть делалась не только (первоначально) для создания высоко уровневых структур и алгоритмов работы с ними, но и для обеспечения большей переносимости, меньшей зависимости от операционной системы.
Избежать зависимости полностью, похоже, невозможно (если не считать препроцессорные #define / #ifdef), но в значительной степени можно.
Вот из этих соображений практически весь код примеров был переписан.
И в итоге всё это пригодно и для ... другой ОС :lol:

Re: Начала STL и контейнры C++

Добавлено: 20 фев 2016, 21:58
Olej
Olej писал(а): ... архивы примеров кодов: на Yandex и на Google - свежак по состоянию на 20.02.
Архив: на Yandex и на Google

Сортировка. Часть 12
Редакция от 19.02.2016, ссылка на Yandex и на Google

Сортировка структур. Часть 13
Редакция от 19.02.2016, ссылка на Yandex и на Google

Re: Начала STL и контейнры C++

Добавлено: 26 фев 2016, 02:19
Olej
Olej писал(а): Архив: на Yandex и на Google
Архив: на Yandex и на Google

Обобщённые численные алгоритмы. Часть 14
Редакция от 21.02.2016, ссылка на Yandex и на Google

Адаптеры. Часть 15
Редакция от 21.02.2016, ссылка на Yandex и на Google

Указатели в контейнерах. Часть 16
Редакция от 22.02.2016, ссылка на Yandex и на Google

Что почитать? Часть 17
Редакция от 23.02.2016, ссылка на Yandex и на Google

Кого заинтересуют только C++ код примеров - прикрепляю его и сюда, дополнительно.

Re: Начала STL и контейнеры C++

Добавлено: 09 мар 2016, 02:39
Olej
Занятные кое в чём статейки по STL, там есть мелкие любопытные детали, в то время как в подавляющем большинстве публикаций по теме только переписывают друг у друга бла-бла-бла:

Справочник по C++ STL. Итераторы

Итераторы библиотеки STL.
Дмитрий Рамодин

Нелегкая выпала доля тем, кто связал свою жизнь с программированием на языке Cи++. На мой взгляд, для изготовления Cи++ был изуродован прекраснейший язык Cи. Мало того, Cи++ мутирует чуть ли не каждый квартал, постепенно превращаясь в игрушку-трансформер, а сам автор Си++ вынужден выпускать одну книжку за другой для толкования своего детища. С внедрением языка Си++ в коммерческую разработку резко упала надежность программного обеспечения, что пользователи прочувствовали на своей шкуре. Чрезмерная избыточность языка Cи++ привела к тому, что один и тот же алгоритм каждый программист кодирует по-своему и, в соответствии с законами Мерфи и Питерса, не самым оптимальным способом. А надо сказать, что Си++ - просто бескрайнее море перегруженных операторов. Однако нашлись люди, предложившие некую надстройку над Си++, существенно упростившую работу с этим языком и сделавшую ее довольно комфортной. Среди них выделяется фигура нашего соотечественника г-на Степанова, перебравшегося в Америку и создавшего библиотеку Standard Template Library (STL). Теперь это чудо программистской мысли стало частью чернового стандарта языка Си++.
...
(я буду оставлять для памятки только те ссылки, которые мне чем-то приглянулись ... вам могут понравиться совсем другие ;-) )

Функторы, предикаты, функциональные адаптеры, лямбда-функции

Обобщенные алгоритмы в алфавитном порядке

Re: Начала STL и контейнры C++

Добавлено: 17 мар 2016, 12:30
Olej
Olej писал(а): Теперь по самим текстам, по частям:
Большая ревизия (давно не обновлял):

Архив примеров кода на Yandex и на Google

И тексты (разбивка частей несколько поменялась):

Массивы со статической и динамической размерностью. Часть 1
Редакция 07, от 25.02.2016, ссылка на Yandex и на Google

Контейнеры STL. Часть 2
Редакция 10, от 05.03.2016, ссылка на Yandex и на Google

Контейнеры STL: vector. Часть 3
Редакция 07, от 02.03.2016, ссылка на Yandex и на Google

Контейнеры STL: list. Часть 4
Редакция 08, от 16.03.2016, ссылка на Yandex и на Google

Классы string и wstring. Часть 5
Редакция 06, от 19.02.2016, ссылка на Yandex и на Google

Ассоциативные контейнеры STL. Часть 6
Редакция 06, от 07.03.2016, ссылка на Yandex и на Google

Контейнеры STL: map. Часть 7
Редакция 03, от 19.02.2016, ссылка на Yandex и на Google

Контейнеры STL: multimap. Часть 8
Редакция 04, от 19.02.2016, ссылка на Yandex и на Google

Контейнеры STL: set и multiset. Часть 9
Редакция 03, от 19.02.2016, ссылка на Yandex и на Google

Итераторы ввода-вывода. Часть 9A
Редакция 02, от 15.03.2016, ссылка на Yandex и на Google
(некоторых частей не было вообще в предыдущих редакциях, они вставные, чтобы не нарушать порядок именования частей они идут с буквенным индексом)

Алгоритмы. Часть 10
Редакция 04, от 21.02.2016, ссылка на Yandex и на Google

Функциональные объекты. Часть 11
Редакция 04, от 20.02.2016, ссылка на Yandex и на Google

Сортировка. Часть 12
Редакция 03, от 20.02.2016, ссылка на Yandex и на Google

Сортировка структур. Часть 13
Редакция 03, от 20.02.2016, ссылка на Yandex и на Google

Обобщённые численные алгоритмы. Часть 14
Редакция 02, от 21.02.2016, ссылка на Yandex и на Google

Скалярное произведение, фильтрация. Часть 14B
Редакция 03, от 16.03.2016, ссылка на Yandex и на Google

Другие обобщённые алгоритмы. Часть 14C
Редакция 02, от 17.03.2016, ссылка на Yandex и на Google

Обобщённые алгоритмы на массивах. Часть 14Z
Редакция 01, от 16.03.2016, ссылка на Yandex и на Google

Адаптеры. Часть 15
Редакция 02, от 22.02.2016, ссылка на Yandex и на Google

Указатели в контейнерах. Часть 16
Редакция 02, от 24.02.2016, ссылка на Yandex и на Google

Что почитать? Часть 17
Редакция 03, от 23.02.2016, ссылка на Yandex и на Google

Re: Начала STL и контейнеры C++

Добавлено: 18 мар 2016, 02:04
Olej
Леен Аммерааль, STL для программистов на C++, М.: ДМК, 1999, ISBN: 5-89818-027-3
9337f9e869e6063be307e2ad5c8ff6d1.jpg
Дэвид Р.Мюссер, Атул Сейни, Жилмер Дж. Дердж, C++ и STL: справочное руководство, М.: Вильямс, 2010, ISBN: 978-5-8459-1665-5 — 432 стр.
787294.jpg
787294.jpg (7.93 КБ) 6464 просмотра
http://nnm-club.me/forum/viewtopic.php?t=274422