Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 16.10.2012
Сообщений: 58
1

Какая-нибудь книга по STL, только чтобы с нуля и основательно

02.11.2014, 23:52. Просмотров 1832. Ответов 9
Метки нет (Все метки)

Здравствуйте, не подскажите какую-нибудь книгу по STL только чтобы с нуля и основательно, советовали "Эффективное использование STL" но там не с нуля, а скорее советы как выжать максимум эффективности, а мне надо именно прочитать основы об итераторах контейнерах и так далее!Заранее спасибо за помощь !
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.11.2014, 23:52
Ответы с готовыми решениями:

Какая вероятность того, что сумма этих чисел будет больше нуля, а произведение меньше нуля ?
С отрезка наугад взяли два числа. Какая вероятность того, что их сумма будет больше нуля, а...

Как сделать так, чтобы при нажатии кнопки на дочернем окне, в родительском окне открылась какая-нибудь страница ?
Как сделать так, чтобы при нажатии кнопки на дочернем окне, в родительском окне открылась...

Есть ли какие-нибудь настройки в InterDev, чтобы подсвечивать синтаксис не только *.asp файлов.
Я что-то не нашел, а мне хочеться что-бы например файлы с раширением *.pasp среда воспринимала как...

Книга по STL
Всем привет! Хотелось бы изучить STL, но не знаю какую книгу купить. Джосьютиса уже нет в...

9
2702 / 1872 / 553
Регистрация: 05.06.2014
Сообщений: 5,423
03.11.2014, 00:29 2
а мне надо именно прочитать основы об итераторах контейнерах и так далее!
Что там читать то?
1) Работа с итератором на 90% аналогична работе с указателем (*, ->, ++, -- имеют тот же самый эффект). Некоторые отличия есть (скажем, не все итераторы можно вычитать друг из друга), но это уже не совсем основы.
2) У контейнеров хранящих сразу пачку значений (std::vector, std::map и так далее) есть методы begin и end. begin возвращает итератор указывающий на начало содержимого контейнера, end - итератор указывающий на конец контейнера. Для любого такого контейнера можно написать for(std::some_container::iterator pos=X.begin();pos!=X.end();++pos) и пробежаться по всему его содержимому. В C++11 - for(auto pos:X). Да, это тоже "для всего".

Остальное - технические подробности типа "попытка изменить вектор приводит к тому что все старые итераторы/указатели становятся невалидны". www.cplusplus.com в помощь.
1
5478 / 4873 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
03.11.2014, 01:00 3
Лучший ответ Сообщение было отмечено IrineK как решение

Решение

Мюссер Д., Дердж Ж., Сейни А. "C++ и STL. Справочное руководство".
Л.Аммерааль "STL для программистов на C++".
3
Эксперт С++
3206 / 1733 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
03.11.2014, 05:26 4
Цитата Сообщение от Renji Посмотреть сообщение
Что там читать то?
Цитата Сообщение от Renji Посмотреть сообщение
Для любого такого контейнера можно написать for
Ну, хотя бы для того, чтобы узнать, что для обработки контейнеров существуют алгоритмы, из-за которых Степанов и написал STL, обрабатывать их циклами - это сишничество чистейшей воды.
0
2702 / 1872 / 553
Регистрация: 05.06.2014
Сообщений: 5,423
03.11.2014, 07:50 5
Цитата Сообщение от Mr.X Посмотреть сообщение
Ну, хотя бы для того, чтобы узнать, что для обработки контейнеров существуют алгоритмы, из-за которых Степанов и написал STL, обрабатывать их циклами - это сишничество чистейшей воды.
И каким же алгоритмом, скажем, распечатать пронумерованный список элементов std::map? Нет, несколько повседневных задач (сортировка и поиск) алгоритмы действительно решают, но это ни разу не панацея от использования циклов. И чтива на эту тему - несколько страниц документации.
0
Эксперт С++
3206 / 1733 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
03.11.2014, 08:04 6
Цитата Сообщение от Renji Посмотреть сообщение
И каким же алгоритмом, скажем, распечатать пронумерованный список элементов std::map?
Распечатать - это на консоль вывести что ли? Если оператор << для его элементов перегружен, то std::copy, в противном случае std::for_each.
0
2702 / 1872 / 553
Регистрация: 05.06.2014
Сообщений: 5,423
03.11.2014, 08:26 7
Цитата Сообщение от Mr.X Посмотреть сообщение
Распечатать - это на консоль вывести что ли? Если оператор << для его элементов перегружен, то std::copy, в противном случае std::for_each.
value_type любого std::map это pair<const key_type,mapped_type>. Разумеется, никакие << для них не перегружены. А std::for_each хочет отдельно объявленный функтор. Да, теоретически этот функтор можно написать, но конструкция получится гораздо более громозкой чем обычный цикл.
0
Эксперт С++
3206 / 1733 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
03.11.2014, 08:57 8
Цитата Сообщение от Renji Посмотреть сообщение
Разумеется, никакие << для них не перегружены
А кто мешает перегрузить?
Цитата Сообщение от Renji Посмотреть сообщение
Да, теоретически этот функтор можно написать, но конструкция получится гораздо более громозкой чем обычный цикл.
Ну, при наличии лямбда-функций с написанием функторов вообще никаких проблем. Конструкции с циклом и с std::for_each c функтором, описывающим итерацию цикла, семантически эквивалентны, однако специалисты советуют применять именно алгоритмы, так как это является стандартной идиомой, и при их использовании вероятность сделать ошибку гораздо меньше, чем при сочинении самопального цикла.
0
2702 / 1872 / 553
Регистрация: 05.06.2014
Сообщений: 5,423
03.11.2014, 09:16 9
Цитата Сообщение от Mr.X Посмотреть сообщение
А кто мешает перегрузить?
Громозкость итоговой конструкции. Для работы через std::copy нужно использовать std::ostream_iterator и перегрузку операторов. Через циклы все делается в две коротких строчки.
C++
1
2
for(auto pos:my_map)
    cout<<pos.second<<endl;
Цитата Сообщение от Mr.X Посмотреть сообщение
Ну, при наличии лямбда-функций с написанием функторов вообще никаких проблем.
Лямбда-функции есть только в C++11. Но в C++11 for-each циклы сделаны частью синтаксиса языка (смотри пример выше). На кой черт заменять стандартный синтаксис на шаблоны std?
0
Эксперт С++
3206 / 1733 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
03.11.2014, 11:11 10
Цитата Сообщение от Renji Посмотреть сообщение
for-each циклы сделаны частью синтаксиса языка
Убедили, с такими циклами я согласен, но все равно считаю, что алгоритмы должны иметь приоритет над циклами.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.11.2014, 11:11

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

Новая книга по С# с нуля, но мощно
Комрады, не бейте ногами сразу) С# пока не изучал... Киндер учится на 2-ом курсе колледжа - по...

Нужна книга для полного нуля в программировании
Я полный ноль в программировании, особого опыта не имею, школьник собственно, 8 класс, можете...

Гостевая книга! Ну хоть кто-нибудь!
Люди подскажите дурачку как написать, самому гостевую книгу!!!!! Помогите начинающему!

Какая книга лучше?
Какую книгу по алгоритмам прочитать лучше -&quot;Алгоритмы.Построение и анализ&quot; Кормена или...


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

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

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