Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.83/12: Рейтинг темы: голосов - 12, средняя оценка - 4.83
Olej
322 / 170 / 24
Регистрация: 25.03.2012
Сообщений: 712
1

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

02.09.2016, 23:38. Просмотров 2182. Ответов 26
Метки нет (Все метки)

Многие улучшения, сделанные из C в C++ вызывают сомнения и вопросы...
Именно поэтому, наверное, при любви к C++ вузовских пЫдагогов, в обучении - число реальных публичных, широко известных открытых проектов на C++ за прошедшие 20 лет так и не выросло лавинно, и в процентном отношении так и не превышает долю проектов на классическом C. И именно поэтому, наверное, развитие идеологии (если и не впрямую синтаксиса) языка C пошло 6-7 лет назад в новое ответвление - язык Go.

Но всё это лирика...
А есть в C++ (современном, после начала 2000-х) один раздел, которого так не хватало в классическом C для построения высокоуровневых структур данных. Это STL (Standard Template Library). Идеи реализации которой заимствованы из языка Ada...
И, если кто помнит, автор C++ Б.Страуструп сам постоянно пишет, что программировать а C++ можно в совершенно разных стилях ... например, следуя во многом идеологии C, используя там где это удобно новые возможности C++ ... не увлекаясь чрезмерно классами и объектами ... ещё меньше наследованием и полиморфизмом ... и совсем уж как огня опасаясь множественного наследования

Другими словами это называется: сосредотачиваться на алгоритмике решения поставленной задачи (инженерная цель), а не на эстетических игрищах с "кодастайл" и другими формальными бирюльками...
И в этом сильную помощь оказывает активное использование STL. Но для этого STL нужно уметь использовать разнообразно, гибко, а не тупо повторяя заклинания из учебников. Лучше на примерах, которые можно прямо взять, скопировать и использовать в своём коде. Да ещё и с учётом тех новшеств, которые даёт стандарт C++11 (2011 года), когда использование STL + C++11 даёт очень интересную ... интерференцию.

Вот такому использованию STL посвящен написанный по случаю такой вот текст: Начала STL и контейнеры C++.
(я даю только косвенную ссылку на текст и примеры, потому что а). их местоположение изменяется и б). они обновляются и расширяются ...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.09.2016, 23:38
Ответы с готовыми решениями:

Начала STL и контейнеры C++
Вот такой вот простенький текст предлагается "Начала STL и контейнеры C++"....

Контейнеры STL
Кто знает где найти информацию по поводу стандартных контейнеров STL?...

Контейнеры Stl, экзамен
Очень прошу помочь на экзамене! Написать программу: в контейнере имеется...

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

Ассоциативные контейнеры STL
Везде сказано: set - упорядоченное множество уникальных элементов. (есть куча...

26
Fulcrum_013
1588 / 1071 / 124
Регистрация: 14.12.2014
Сообщений: 8,822
Завершенные тесты: 3
03.09.2016, 01:49 21
Цитата Сообщение от Olej Посмотреть сообщение
Идеи реализации которой заимствованы из языка Ada...
На самом деле все совсем не так. Степанов сначала попытался эту дурь реализовать средствами Ада и пропхнуть ее в стандарт там (тогда АДА была очень высоко денежной кормушкой). Но там ни средств шаблонов не хватило ни Пентагону эта идея не понравилась а тем более допиливать что то в уже стандартизированной АДА к которой с огромным трудом создали компилятор соответствовавший спецификациям. Потому дал ему Пентагон от ворот поворот. Посему в сговоре со Страуструпом впихнули эти дела в новый язык С++. И создали комитет по стандартизации основной задачей которого является пропихивание этого говнакода в стандарт (код библиотеки подпадает под copyright по американскому законодательству спецификация ЯП нет). Но не ко двору пришлась бо как устарела концептуально. Вот и развернули компанию по пропихиванию этого гуано в массы путем рекламы от майкрософта который в долях, но в своем софте ее не использует похоже принципиально.
0
hoggy
Нарушитель
Эксперт С++
7086 / 3129 / 648
Регистрация: 15.11.2014
Сообщений: 7,206
Завершенные тесты: 1
03.09.2016, 01:54 22
Цитата Сообщение от Olej Посмотреть сообщение
Если ссылаетесь на стандарт - нужно давать ссылку (какой, где).
вообще то с практической точки зрения достаточно гугла и:
http://www.cplusplus.com/reference/map/map/

нет расхождений между текстом спецификации,
и офф. источником документации.

но если вы так настаиваете:

23.4.4.1 Class template map overview [map.overview]
1 A map is an associative container that supports unique keys (contains at most one of each key value) and
provides for fast retrieval of values of another type T based on the keys.
Цитата Сообщение от Olej Посмотреть сообщение
А я ссылался на реализацию UNIX/Linux
да мне пофигу на что вы там ссылались.

стандарт языка ортогонален платформам.
вы - дезынформировали.

и я вам не верю.
я не думаю что бубунтовская какая нибудь реализация выполнена не на красно-черных.

ну хорошо.

я не буду вас упрекать тем, что вы оказались не очень конкретным.

но вот вы сказали:
Цитата Сообщение от Olej Посмотреть сообщение
я ссылался на реализацию UNIX/Linux
покажите эту реализацию.
проведите экскурсию.
продемонстрируйте хэш-таблицы этой реализации.
0
Fulcrum_013
1588 / 1071 / 124
Регистрация: 14.12.2014
Сообщений: 8,822
Завершенные тесты: 3
03.09.2016, 02:17 23
В сговоре со Страуступом потому как в механизмах шаблонов и самом языке отсутствуют некоторые мелочи которые резко бы снизили зависимость от сторонних библиотек к примеру при реализации SFINAE или событийных схем управления.

Добавлено через 10 минут
Цитата Сообщение от Olej Посмотреть сообщение
в обучении - число реальных публичных, широко известных открытых проектов на C++ за прошедшие 20 лет так и не выросло лавинно,
Это по другой причие. С++ из ниши массовых всем известных хеллоувердов окончательно уходит в сферу специализированного математически высоко нагруженного сверхнадежного софта. В следствии резкой нехватки спецов С++ владеющих нужным матаном. Т.е. перемещается в те сферы где проекты не могут быть ни публичными ни открытыми. к примеру вот в этот проект Falcon-9

Добавлено через 3 минуты
А доступными широким массам останутся разве что домашние ОС написанные на С++ и что то из серии Unity и т.п.

Добавлено через 4 минуты
Цитата Сообщение от Olej Посмотреть сообщение
не увлекаясь чрезмерно классами и объектами ... ещё меньше наследованием и полиморфизмом ... и совсем уж как огня опасаясь множественного наследования
Т.е. пропагандирует подходы и методы 60-х для которых и создана STL
0
ct0r
Игогошка!
1789 / 690 / 44
Регистрация: 19.08.2012
Сообщений: 1,340
Завершенные тесты: 1
03.09.2016, 02:19 24
Цитата Сообщение от Olej Посмотреть сообщение
У вас есть аргументы против?
Цитата Сообщение от hoggy Посмотреть сообщение
он не говорит,
что это обязательно должны быть хеш-таблицы
Это не могут быть хэш-таблицы, потому что как минимум:
1) в хэш-таблицах элементы не могут храниться упорядоченно
2) в хэш-таблицах эквивалентность элементов определяется по значению хэш-функции, а в мапе - по отношению эквивалентности, которое использует оператор сравнения
3) в мапе нельзя задать хэш-функцию

Цитата Сообщение от Olej Посмотреть сообщение
Если ссылаетесь на стандарт - нужно давать ссылку (какой, где).
Например http://open-std.org/JTC1/SC22/WG21/docs/papers/2016/n4606.pdf

Цитата Сообщение от Olej Посмотреть сообщение
А я ссылался на реализацию UNIX/Linux, публикации на эту тему (поверьте, не сам придумал), и результаты использования и тестов.
А где сами ссылки?
Не понял про Unix/Linux реализации - это какие? Я знаю только названия разных либ - типа stdlibc++, libc++.
2
Fulcrum_013
1588 / 1071 / 124
Регистрация: 14.12.2014
Сообщений: 8,822
Завершенные тесты: 3
03.09.2016, 02:38 25
Цитата Сообщение от hoggy Посмотреть сообщение
согласно теории ошибок, командир указывает солдатам, а не наоборот.
А кто сказал что контейнер это командир? Контейнер это гостиница а объект это постоялец. Захотел -заселился захотел-выселился.
Цитата Сообщение от hoggy Посмотреть сообщение
в годной архитектуре,
Годная архитектура минимизирует количество кода управляющего таким заселением/выселением и имеет средства недопущения висячих ссылок не ограничивая при этом удаления объектов наличием на него активных ссылок.
Цитата Сообщение от hoggy Посмотреть сообщение
и не делать никаких предположений о форме своего существования,
которую этот агрегат для них определил
Это подходит к фундаментальным типам но никак не к полиморфным объектам.
0
Fulcrum_013
1588 / 1071 / 124
Регистрация: 14.12.2014
Сообщений: 8,822
Завершенные тесты: 3
03.09.2016, 04:01 26
Цитата Сообщение от Olej Посмотреть сообщение
и они, дурачки, и не знали, что у выньдаунов в 70-е "наступила эпоха"!
Учитывая где работал Степанов до того как эту концепцию созрел он похоже вообще дурачок который вообще был не в курсе что в его сфере деятельности (промышленная автоматика) в мире делается.

Добавлено через 4 минуты
Цитата Сообщение от hoggy Посмотреть сообщение
согласно теории ошибок, командир указывает солдатам, а не наоборот.
Согласно теории ошибок командует тот кто обладает всей полнотой данных необходимых для принятия решения.
Пример: полиморфный объект содержится в нескольких списках обработки в которые может вносится/исклочаться в зависимости от своего состояния. Кто в данном случае имеет всю полноту данных об объекте и необходимости его нахождения в том или ином списке - контейнеры или объект?

Добавлено через 55 минут
Цитата Сообщение от Olej Посмотреть сообщение
так там и самые умные объекты закончатся утечкой памяти и крахом приложения
Угу. Вообще то для того чтобы указатели были действительно безопасными умными должны быть не сами указатели а объекты которые их используют. Иначе проблема висячих ссылок просто перекрашивается в проблему мертвых подписчиков и вот тогда память и начинает утекать. К примеру поищите даже на этом форуме вопросы насчет счет "куда и почему течет память" практически все они в разделе языков с автоматической сборкой мусора которая берет начало от той же концепции полоумных указателей что и в STL
0
magirus
Почетный модератор
Эксперт по компьютерным сетямЭксперт Windows
27954 / 15675 / 959
Регистрация: 15.09.2009
Сообщений: 67,837
Записей в блоге: 78
03.09.2016, 08:54 27
я прикрою Ваши высказывания Уважаемые. тема выеденного яйца не стоит. и переносить в "священные войны" даже не буду
"дротите как хотите, я дротю как я хотю"
0
03.09.2016, 08:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.09.2016, 08:54

STL. Итераторы и последовательные контейнеры
Немогу решить эти задачки: 1 Написать экземпляр класса queue на основе...

Контейнеры STL и виды деревьев
подскажите, или покажите где есть эта информация например я знаю, что...

STL: контейнеры. Произвольная вставка элементов
Доброго времени суток! Можно ли вставить элемент в контейнер STL (не важно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
27
Закрытая тема Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru