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

Проекты открытые участниками форума

Модераторы: Olej, vikos

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

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

Непрочитанное сообщение Olej » 13 фев 2016, 17:48

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

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

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

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

Непрочитанное сообщение Olej » 15 фев 2016, 12:49

Olej писал(а): На сегодня их 6 шт.
Уже 9. ;-)

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

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

Непрочитанное сообщение Olej » 20 фев 2016, 14:04

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.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

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

Непрочитанное сообщение Olej » 20 фев 2016, 14:29

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

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

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

Непрочитанное сообщение Olej » 20 фев 2016, 19:08

Olej писал(а):
Вопрос (спрашивают): почему названия, ссылки и даты последних редакций там сильно "пляшут", даже давно размещённые части, из самых первых?
Ответ: потому, что, идя навстречу пожеланиям трудящихся, я сделал то, чего никогда не делаю - выверил и скорректировал коды примеров в виртуальной машине с Windows 7, в среде IDE Code::Blocks 2013.
На этом месте стоило бы остановиться подробнее...
Библиотека шаблонных классов C++ пришла из Boost, куда она пришла, соответственно, из STL ... начиная от фирмы HP.
Эта часть делалась не только (первоначально) для создания высоко уровневых структур и алгоритмов работы с ними, но и для обеспечения большей переносимости, меньшей зависимости от операционной системы.
Избежать зависимости полностью, похоже, невозможно (если не считать препроцессорные #define / #ifdef), но в значительной степени можно.
Вот из этих соображений практически весь код примеров был переписан.
И в итоге всё это пригодно и для ... другой ОС :lol:
Вложения
vect3.png
vect3.png (19.05 КБ) 7094 просмотра
map1.png
map1.png (20.68 КБ) 7094 просмотра
map2.png
(19.67 КБ) 4952 скачивания
algo2.png
(18.2 КБ) 4952 скачивания

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

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

Непрочитанное сообщение Olej » 20 фев 2016, 21:58

Olej писал(а): ... архивы примеров кодов: на Yandex и на Google - свежак по состоянию на 20.02.
Архив: на Yandex и на Google

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

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

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

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

Непрочитанное сообщение Olej » 26 фев 2016, 02:19

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++ код примеров - прикрепляю его и сюда, дополнительно.
Вложения
examples.8.tgz
(80.22 КБ) 296 скачиваний

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

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

Непрочитанное сообщение Olej » 09 мар 2016, 02:39

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

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

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

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

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

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

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

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

Непрочитанное сообщение Olej » 17 мар 2016, 12:30

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

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

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

Непрочитанное сообщение Olej » 18 мар 2016, 02:04

Леен Аммерааль, 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 КБ) 6453 просмотра
http://nnm-club.me/forum/viewtopic.php?t=274422

Ответить

Вернуться в «Проекты участников»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей