Vyatka-sputnik.ru

Курсы и образование
6 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Stl c книга

STL: стандартная библиотека шаблонов С++

STL: стандартная библиотека шаблонов С++

    Статьи , 25 декабря 2014 в 18:04

Механизм шаблонов встроен в компилятор C++, чтобы дать возможность программистам делать свой код короче за счет обобщенного программирования. Естественно, существуют и стандартные библиотеки, реализующие этот механизм. STL является самой эффективной библиотекой C++ на сегодняшний день.

Сейчас существует немало ее реализаций, каждая из которых, хоть и создана в рамках стандарта, обладает собственными расширениями. У подобного подхода есть один недостаток: не всегда код будет работать одинаково с разными компиляторами. Поэтому настоятельно рекомендуем вам максимально придерживаться традиционных приемов, как бы хорошо вы не разбирались в конкретной реализации библиотеки.

Первое знакомство

Для начала рассмотрим самые популярные коллекции из библиотеки. Каждая из них имеет собственный набор шаблонных параметров, чтобы быть максимально удобной для как можно большего спектра решаемых задач.

Коллекции

Для использования коллекции в своем коде используйте следующую директиву:

#include ,
где T — название коллекции

Итак, наиболее часто используются:

  • vector — коллекция элементов, сохраненных в массиве, изменяющегося по мере необходимости размера (обычно, увеличивающегося);
  • list — коллекция, хранящая элементы в виде двунаправленного связанного списка;
  • map — коллекция, сохраняющая пары вида , т.е. каждый элемент — это пара вида , при этом однозначная (каждому ключу соответствует единственное значение), где ключ — некоторая характеризующая значение величина, для которой применима операция сравнения; пары хранятся в отсортированном виде, что позволяет осуществлять быстрый поиск по ключу, но за это, естественно, придется заплатить: придется так реализовывать вставку, чтобы условие отсортированности не нарушилось;
  • set — это отсортированная коллекция одних только ключей, т.е. значений, для которых применима операция сравнения, при этом уникальных — каждый ключ может встретиться во множестве (от англ. set — множество) только один раз;
  • multimap — map , в котором отсутствует условие уникальности ключа, т.е. если вы произведете поиск по ключу, то получите не единственное значение, а набор элементов с одинаковым значением ключа; для использования в коде используется #include ;
  • multiset — коллекция с тем же отличием от set’а, что и multimap от map’а, т.е. с отсутствием условия уникальности ключа; для подключения: #include .

Строки

Любая серьезная библиотека имеет свои классы для представления строк. В STL строки представляются как в формате ASCII, так и Unicode:
string — коллекция однобайтных символов в формате ASCII;
wstring — коллекция двухбайтных символов в формате Unicode; включается командой #include .

Строковые потоки

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

Строковый поток — это буфер с нуль-терминатором в конце, поэтому при первой распечатке в конце строки оказывается мусор, т.е. получить реальный конец можно не посредством нуль-терминатора, а получив счетчик: pcount() . Затем “реальная часть” потока копируется в новую строку, и мы получаем распечатку уже без мусора.

Итераторы

Очень важное понятие в реализации динамических структур данных — итератор. Неформально итератор можно определить как абстракцию, которая ведет себя как указатель, возможно, с какими-то ограничениями. Строго говоря, итератор — более общее понятие, и является объектной оберткой для указателя, поэтому указатель является итератором. Примерно его устройство может выглядеть так:

Вот несколько формализованных определений итератора:

  • Итераторы обеспечивают доступ к элементам коллекции
  • Для каждого конкретного класса STL итераторы определяются отдельно внутри класса этой коллекции.

Существуют три типа итераторов:

  • (forward) iterator — для обхода коллекции от меньшего индекса к большему;
  • reverse iterator — для обхода коллекции от большего индекс к меньшему;
  • random access iterator — для обхода коллекции в любом направлении.

Вот пример использования итераторов для удаления половин элементов коллекции:

Важно понимать, что при получении итератора на какой-то элемент коллекции и последующем изменении коллекции итератор может стать непригоден для использования.

Ивент переехал в онлайн, есть новые даты ( 14 – 15 июля ) , Москва и онлайн, 10 750–138 000 ₽

Итерация вперед и аналогично назад происходит так:
for (iterator element = begin (); element

При использовании random access iterator, например, так:
for (iterator element = begin (); element

Методы коллекций

Основными методами, присутствующими почти во всех коллекциях являются следующие:

  • empty — определяет, пуста ли коллекция;
  • size — возвращает размер коллекции;
  • begin — возвращает прямой итератор, указывающий на начало коллекции;
  • end — возвращает прямой итератор, указывающий на конец коллекции, т.е. на несуществующий элемент, идущий после последнего;
  • rbegin — возвращает обратный итератор на начало коллекции;
  • rend — возвращает обратный итератор на конец коллекции;
  • clear — очищает коллекцию, т.е. удаляет все ее элементы;
  • erase — удаляет определенные элементы из коллекции;
  • capacity — возвращает вместимость коллекции, т.е. количество элементов, которое может вместить эта коллекция (фактически, сколько памяти под коллекцию выделено);

Вместимость коллекции, как было сказано в начале, меняется по мере надобности, т.е. если вся выделенная под коллекцию память уже заполнена, то при добавлении нового элемента вместимость коллекции будет увеличена, а все значения, бывшие в ней до увеличения, будут скопированы в новую область памяти — это довольно “дорогая” операция. Убедиться в том, что размер и вместимость — разные вещи, можно на следующем примере:

Vector

Самая часто используемая коллекция — это вектор. Очень удобно, что у этой коллекции есть такой же оператор operator [] , что и у обычного массива. Такой же оператор есть и у коллекций map , deque , string и wstring .

Важно понимать, что вместимость vector’а изменяется динамически. Обычно для увеличения размера используется мультипликативный подход: выделенная под vector память увеличивается при необходимости в константное число раз, т.е. если добавление нового элемента приведет к тому, что размер массива превысит вместимость, то операционной системой для программы будет выделен новый участок памяти, например, в два раза больший, в который будут скопированы все значения из старого участка памяти и к которому будет дописано новое значение.

Алгоритмы

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

  • Методы перебора всех элементов коллекции и их обработки: count , count_if , find , find_if , adjacent_find , for_each , mismatch , equal , search copy , copy_backward , swap , iter_swap , swap_ranges , fill , fill_n , generate , generate_n , replace , replace_if , transform , remove , remove_if , remove_copy , remove_copy_if , unique , unique_copy , reverse , reverse_copy , rotate , rotate_copy , random_shuffle , partition , stable_partition
  • Методы сортировки коллекции: sort , stable_sort , partial_sort , partial_sort_copy , nth_element , binary_search , lower_bound , upper_bound , equal_range , merge , inplace_merge , includes , set_union , set_intersection , set_difference , set_symmetric_difference , make_heap , push_heap , pop_heap , sort_heap , min , max , min_element , max_element , lexographical_compare , next_permutation , prev_permutation
  • Методы выполнения определенных арифметических операций над членами коллекций: Accumulate , inner_product , partial_sum , adjacent_difference
Читать еще:  Книги по unreal engine 4 на русском

Задачей этой статьи является лишь познакомить читателя с богатым набором инструментов, предоставляемых библиотекой STL. Более подробную информацию можно узнать из соответствующей документации.

Предикаты

Для многих алгоритмов STL можно задать условие, посредством которого алгоритм определит, что ему делать с тем или иным членом коллекции. Предикат — это функция, которая принимает несколько параметров и возвращает логическое значение (истина/ложь). Существует и набор стандартных предикатов.

Потокобезопасность

Важно понимать, что STL — не потокобезопасная библиотека. Но решить эту проблему очень просто: если два потока используют одну коллекцию, просто реализуйте критическую секцию и Mutex .

Заключение

STL — кросс-платформенная библиотека. Конечно, не существует абсолютной гарантии, что эта библиотека есть в любой версии компилятора. Например, она редко реализуется на мобильных устройствах, потому что большая часть реализованных структур данных делает выбор в пользу быстродействия, совершенно не экономя память, а ведь именно память является самым ценным ресурсом на мобильных платформах, в то время как на PC ее сейчас в избытке. Поэтому, нередко вам придется создавать свои реализации STL, например, для переноса вашего приложения на мобильную платформу.

STL для программистов на C++ — Аммерааль Л.

Название: STL для программистов на C++.

Автор: Аммерааль Л.

Книга посвящена стандартной библиотеке шаблонов (STL) — мощному инструменту повышения эффективности труда программистов, пишущих на C++. Умелое использование STL позволяет повысить надежность, переносимость и универсальность программ, а также снизить расходы на их разработку. В книге описана стандартизованная версия STL.

Дается введение в предмет, которое позволяет быстро освоить библиотеку шаблонов. Приведен исчерпывающий справочный материал, в том числе по новому классу STL, sтring.h. Изложение сопровождается многочисленными примерами небольших, но законченных программ, иллюстрирующих ключевые понятия STL. Особое внимание уделено разъяснению сложных понятий библиотеки шаблонов, например, функциональных объектов и адаптеров функций. Для удобства читателей все приведенные в книге программные примеры доступны также в электронном виде, в частности, на Web-узле издательства «ДМК». Книга предназначена как для профессиональных программистов и тех, кто углубленно изучает C++, так и для тех, кто только начинает осваивать этот язык программирования, без преувеличения самый популярный в мире.

Содержание
Предисловие. 7
1. STL для начинающих. 8
1.1. Шаблоны, пространства имен и тип bool. 8
1.2. Знакомство с STL. 14
1.3. Векторы, списки и двусторонние очереди. 20
1.4. Сортировка. 24
1.5. Алгоритм find. 29
1.6. Алгоритм сору и итератор вставки. 30
1.7. Алгоритм merge. 32
1.8. Типы, определенные пользователем. 34
1.9. Категории итераторов. 35
1.10. Алгоритмы replace и reverse. 41
1.11. Возвращаясь к алгоритму sort. 42
1.12. Введение в функциональные объекты. 43
1.13. Использование find_if, remove и removeif. 45
1.14. Класс auto_ptr. 49
2. Другие алгоритмы и контейнеры. 52
2.1. Алгоритм accumulate. 52
2.2. Алгоритм for_each. 54
2.3. Подсчет. 55
2.4. Функциональные объекты, определенные в STL. 57
2.5. Введение в ассоциативные контейнеры. 59
2.6. Множества и множества с дубликатами. 60
2.7. Словари и словари с дубликатами. 62
2.8. Пары и сравнения. 65
2.9. Снова словари. 67
2.10. Функции insert. 72
2.11. Удаление элементов словаря. 74
2.12. Более удобные строки. 74
3. Последовательные контейнеры. 81
3.1. Векторы и связанные с ними типы. 81
3.2. Функции capacity и reserve. 85
3.3. Обзор функций-членов класса vector. 88
3.4. Двусторонние очереди. 92
3.5. Списки. 94
3.6. Векторы векторов. 101
3.7. Как избавиться от явного выделения памяти. 103
4. Ассоциативные контейнеры.107
4.1. Введение.107
4.2. Функции-члены множеств.111
4.3. Объединение и пересечение множеств.117
4.4. Отличия множеств с дубликатами от просто множеств.119
4.5. Словари. 120
4.6. Словари с дубликатами. 124
4.7. Сводный указатель. 127
5. Адаптеры контейнеров. 131
5.1. Стеки. 131
5.2. Очереди. 134
5.3. Очереди с приоритетами. 135
6. Функциональные объекты и адаптеры. 138
6.2. Функциональные объекты. 138
6.2. Унарные предикаты и привязки. 142
6.3. Отрицатели. 143
6.4. Два полезных базовых класса STL. 145
6.5. Функциональные объекты и алгоритм transform. 147
6.6. Адаптеры итераторов. 150
7. Обобщенные алгоритмы. 155
7.1. Немодифицирующие последовательные алгоритмы. 156
7.1.1. Алгоритмы find, count, for_each, find_first_of и find_end. 156
7.1.2. Алгоритм adjacent_find. 158
7.1.3. Отличие. 160
7.1.4. Сравнение на равенство. 161
7.1.5. Поиск подпоследовательности. 162
7.2. Модифицирующие последовательные алгоритмы. 163
7.2.1. Преобразовать. 163
7.2.2. Копировать. 164
7.2.3. Переместить по кругу. 166
7.2.4. Обменять. 168
7.2.5. Заменить. 170
7.2.6. Удалить. 172
7.2.7. Заполнить. 172
7.2.8. Породить. 173
7.2.9. Убрать повторы. 175
7.2.10. Расположить в обратном порядке. 178
7.2.11. Перетасовать. 178
7.2.12. Разделить. 180
7.3. Алгоритмы, связанные с сортировкой. 181
7.3.1. «Меньше» и другие операции сравнения. 182
7.3.2. Сортировка. 182
7.3.3. Стабильная сортировка. 182
7.3.4. Частичная сортировка. 184
7.3.5. N-й элемент. 186
7.3.6. Двоичный поиск. 187
7.3.7. Объединение. 189
7.3.8. Операции над множествами для сортированных контейнеров. 191
7.3.9. Операции над пирамидами. 194
7.3.10. Минимум и максимум. 197
7.3.11. Лексикографическое сравнение. 199
7.3.12. Генераторы перестановок. 200
7.4. Обобщенные численные алгоритмы. 202
7.4.1. Накопление. 202
7.4.2. Скалярное произведение. 202
7.4.3. Частичная сумма. 204
7.4.4. Разность между смежными элементами. 205
7.5. Прикладная программа: метод наименьших квадратов. 206
8. Прикладная программа: очень большие числа. 211
8.1. Введение. 211
8.2. Реализация класса large. 215
8.3. Вычисление числа к. 229
Библиография. 235
Указатель идентификаторов и английских названий. 236
Предметный указатель.

Введение в функциональные объекты.
Существует другой способ решения задачи сортировки из предыдущего раздела. Хотя для такой простой задачи он и не нужен, обсуждаемые принципы являются важными для других более сложных случаев, поэтому не стоит пропускать этот раздел при чтении. Функциональным объектом называется класс, где определен оператор вызова, который записывается как operator(). От класса не требуется наличия каких-либо других членов.

Давайте начнем с очень простого примера. (Здесь и далее мы пишем iostream.h вместо iostream, поскольку в последнем случае VC5 также требует наличия строчки using namespace std, a BC5, напротив, не позволяет использовать эту строчку, если не включаются типичные заголовки STL, такие как vector.)

По кнопкам выше и ниже «Купить бумажную книгу» и по ссылке «Купить» можно купить эту книгу с доставкой по всей России и похожие книги по самой лучшей цене в бумажном виде на сайтах официальных интернет магазинов Лабиринт, Озон, Буквоед, Читай-город, Литрес, My-shop, Book24, Books.ru.

По кнопке «Купить и скачать электронную книгу» можно купить эту книгу в электронном виде в официальном интернет магазине «ЛитРес» , и потом ее скачать на сайте Литреса.

По кнопке «Найти похожие материалы на других сайтах» можно найти похожие материалы на других сайтах.

Читать еще:  Популярные издательства книг

On the buttons above and below you can buy the book in official online stores Labirint, Ozon and others. Also you can search related and similar materials on other sites.

Книги по программированию

Программирование на С

Брайан У. Керниган, Денис М. Ритчи. Язык программирования С. 2-е издание. — М.: Финансы и статистика, 1992.-272с

Классика жанра от авторов языка. Если Вы новичок в программировании и хотели бы приступить к изучению языка С++, то, возможно, Вам стоит начать именно с его предшественника — языка программирования C.

Прата С. Язык программирования C. Лекции и упражнения. 5-е издание. — М.: Издательский дом «Вильямс», 2006.-960с

Еще один популярный учебник по языку программирования C. Отличается простым стилем изложения материала со множеством примеров.

Базовый курс по С++

Подбельский В.В. Язык СИ++. 5-е издание. — М.: Финансы и статистика, 2001.-560с

Подробно рассмотрены синтаксис, семантика и техника программирования языка С++. Читателю достаточно обладать базовыми знаниями по информатике.

Прата С. Язык программирования C++. Лекции и упражнения. 5-е издание. — М.: Издательский дом «Вильямс», 2007.-1184с

Превосходный учебник по C++. Рассматриваются следующие темы: основные и производные типы данных, классы и объекты, наследование, полиморфизм, виртуальные функции, обобщенное программирование, организация ввода-вывода и другие. Рекомендуется для изучения.

Эккель Б. Философия C++. Введение в стандартный C++. Том 1. 2-е издание. — СПб.: Питер, 2004.-572с

В этой книге автор не только подробно описывает все аспекты языка, но также учит читателя мыслить терминами C++.

Углубленное изучение С++

Дьюхэрст С. Скользкие места С++. Как избежать проблем при проектировании и компиляции ваших программ. — М.: ДМК Пресс, 2006.-264с

По самым разным темам приводятся типичные ошибки, совершаемые программистами, а также практические рекомендации по их исправлению.

Коплиен Дж. Программирование на C++. Классика CS. — СПб.: Питер, 2005.-479с

Эта книга впервые была издана в 1991 году. Предназначена для программистов, уже знающих С++ и желающих поднять свою квалификацию на новый уровень. Рассматриваются различные идиомы, стили, конструкции языка C++.

Мейерс С. Эффективное использование С++. 55 верных способов улучшить структуру и код ваших программ. 3-е издание. — М.: ДМК Пресс, 2006.-300с

Советы Скотта Мейерса, почему при написании программы лучше сделать именно так, а не иначе, не раз были прочитаны автором проекта. Хотите быть настоящим программистом? Тогда обязательно прочтите эту книгу.

Мейерс С. Эффективное использование С++. 35 новых рекомендаций по улучшению ваших программ и проектов. — М.: ДМК Пресс; СПб.: Питер, 2006.-296с

Эта книга не пересекается с предыдущей, она дополняет ее. Также рекомендуется к прочтению.

Саттер Г. Решение сложных задач на С++ (серия C++ in Depth). — М.: Издательский дом «Вильямс», 2003.-400с

В форме головоломных задач и их решений рассматриваются приемы программирования для профессиональных программистов. От читателя требуется глубокое знание С++. Несомненно, эта книга достойна Вашего внимания.

Саттер Г. Новые сложные задачи на С++ (серия C++ in Depth). — М.: Издательский дом «Вильямс», 2005.-272с

Эта книга также полезна, как и предыдущая.

Стефенс Д.Р., Диггинс К., Турканис Д., Когсуэлл Д. С++. Сборник рецептов. — М.: КУДИЦ ПРЕСС, 2007.-624с

Сборник рецептов по решению разнообразных практических задач, встречающихся в каждодневной работе программиста C++. Рассмотрены темы: сборка приложений, потоковый ввод-вывод, анализ XML-документов, интернационализация, обработка исключений, математические задачи, Boost.Build и другие.

Страуструп Б. Дизайн и эволюция С++. — М.: ДМК Пресс; СПб.: Питер, 2007.-445с

Автор языка С++ рассказывает историю его создания и показывает, почему он реализован именно так.

Страуструп Б. Язык программирования С++. Специальное издание. — Бином, Невский Диалект, 2008.-1104с

Эту книгу называют настольной библией программиста С++. В свое время эта книга была единственной по языку C++. Ее первое издание появилось в 1985 году. Для новичков некоторые моменты из книги могут быть непонятными. Рекомендуется использовать как справочник по языку программирования C++.

Эккель Б. Философия C++. Практическое программирование C++. Том 2. — СПб.: Питер, 2004.-608с

Эту книгу можно назвать учебником С++ по более сложным темам, таким как обработка исключений, RTTI, шаблоны C++, стандартная библиотека C++, автоматизация тестирования и отладки программ и другим.

Элджер Дж. C++: Библиотека программиста. — СПб.: Питер, 1999.-320с

Эта книга предназначена для опытных разработчиков, желающих поднять свой профессиональный уровень еще выше. Автор рассказывает о таких нетривиальных аспектах C++ как косвенные обращения, гомоморфные иерархии классов и пространства памяти. Прочитав эту книги, Вы расширите арсенал приемов программирования на С++.

Стандартная библиотека С++. Стандартная библиотека шаблонов STL

Джосьютис Н. C++. Стандартная библиотека. — СПб.: Питер, 2004.-736с

Одна из самых лучших книг по данной теме. Помимо STL рассматриваются библиотека потокового ввода/вывода, строки, специальные контейнеры и другие компоненты стандартной библиотеки С++. Изучение STL предполагает наличие у читателя уровня знаний С++ не ниже среднего.

Мейерс С. Эффективное использование STL. Библиотека программиста. — СПб.: Питер, 2003.-224с

Если Вы знакомы с STL и уже используете ее на практике, но при этом у Вас присутствует ощущение того, что Вы делаете это как то не очень эффективно, тогда эта книга для Вас. Здесь Вы найдете 50 рекомендаций для улучшения вашего кода.

Мюссер, Дэвид Р., Держд, Жилмер Дж., Сейни, Атул. С++ и STL: справочное руководство, 2-е издание (серия C++ in Depth). — М.: Издательский дом «Вильямс», 2010.-432с

Справочник по STL c примерами.

C++ — шаблоны

Вандевурд, Дэвид, Джосаттис, Николай, М. Шаблоны С++ и STL: справочник разработчика. — М.: Издательский дом «Вильямс», 2003.-544с

Лучшая (из известных автору проекта) книга по шаблонам С++. Уровень знания языка С++ у читателя — не ниже среднего.

Алгоритмы и структуры данных

Кнут Д. Искусство программирования, том 1. Основные алгоритмы. 3-е издание. — М.: Издательский дом «Вильямс», 2010.—720c

Кнут Д. Искусство программирования, том 2. Получисленные методы. 3-е издание. — М.: Издательский дом «Вильямс», 2007.—832c

Кнут Д. Искусство программирования, том 3. Сортировка и поиск. 2-е издание. — М.: Издательский дом «Вильямс», 2008.—824c

«Искусство программирования» — фундаментальный труд, дело всей жизни автора является настольным справочником программиста. Отличается очень качественной глубинной проработкой материала, имеет академический стиль изложения, поэтому для чтения необходима хорошая математическая подготовка.

Седжвик Р. Алгоритмы С++. Анализ. Структуры данных. Сортировка. Поиск. Алгоритмы на графах. 3-е издание. — М.: Издательский дом «Вильямс», 2011.-1056с

Популярная книга, в которой рассматриваются базовые структуры данных (массивы, строки, связные списки и т.д.), абстрактные типы данных (АТД), деревья, алгоритмы сортировки и поиска, алгоритмы на графах и другие темы. Предназначена для пользователей средней и высокой квалификации.

Топп У., Форд У. Структуры данных в C++. — М.: Издательство «Бином», 2000.-816с

Читать еще:  Книги по хакерству для начинающих

В основном рассматриваются те же темы, что и в предыдущей книге, но не столь глубоко, поэтому материал излагается в более простой для понимания форме.

Паттерны проектирования

Александреску, Андрей. Современное проектирование на C++ (серия C++ in Depth). — М.: Издательский дом «Вильямс», 2008.-336с

Эта книга посвящена разработке шаблонно-ориентированных идиом и паттернов проектирования, в частности некоторых паттернов GoF (см. далее). Для чтения необходимо хорошо знать язык С++, иметь представление о шаблонах вообще и STL в частности.

Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. Приемы объектно-ориентированного проектирования. Паттерны проектирования. — СПб.: Питер, 2001.-368с

Одна из лучших и наиболее обстоятельных книг по данной теме. Представляет собой каталог паттернов проектирования. Эта книга настолько популярна, что часто упоминается как паттерны GoF («Gang of Four» или «банда четырех» по числу авторов). Рекомендуется для изучения, однако, от читателя требуется серьезная подготовка в области объектно-ориентированного программирования.

Методология разработки программного обеспечения

Брукс Ф. Мифический человеко-месяц или как создаются программные системы. — СПб.: Символ-Плюс, 1999.-304с

Впервые появившись на свет в 1975 году и став международным бестселлером, эта книга популярна и по сей день.

Спольски Дж. Джоэл о программировании. — СПб.: Символ-Плюс, 2006.-352с

Эта книга читается легко, увлекательно и очень быстро. Написана в форме статей-заметок об управлении программными проектами и не только. В 2009 году вышло продолжение «Джоэл. И снова о программировании».

[посоветуйте] Книжки по C++. От нуля к STL.

Собственно, сабж. Страуструп отметён в дальний угол, бо уж очень много ненужной информации. Уже советовали в другом топике книги, но хотелось бы составить что-то вроде программы изучения аспектов языка.

Пока присмотрел такие (в порядке изучения):

1. Джосьютис Н. — C++. Стандартная библиотека.

2. Пабло Халперн — Стандартная библиотека C++ на примерах.

3. Скотт Мейерс — Эффективное использование STL.

Кто их читал? Что-нибудь ещё посоветуете?

LOR как записная книжка

Я просто оставлю это здесь.

[посоветуйте] Книжки по C++. От нуля к STL.

Читал первую и третью. Это не для новичков. Йосатиса хорошо использовать как продвинутый справочник. Третья для тех кто уже знает STL, если не изменяет память. Страуструпа имхо зря отмёл.

[посоветуйте] Книжки по C++. От нуля к STL.

Я бы посоветовал: Шилдт «C++: базовый курс». У него другие книжки есть — они заметно хуже. А вот эта для новичка в самый раз.

[посоветуйте] Книжки по C++. От нуля к STL.

Язык программирования, особенно C++, по книгам выучить нельзя.
Сам C++, вообще, небольшой и простой, по сути, в плане концепций. И сама эта суть изучается по статье из википедии и ссылкам в ней. Правда, это 10% где-то.

Остальные 90% его изучения это изучения его косяков и багов в дизайне и глюков его компиляторов. Но это тем более по книгам не выучить(разве что мейерс что-то там пишет по теме).

Ну и, начинать изучение программирования, если это так, с C++ это последнее дело. Лучше хотя бы с Си, чистого. И чего-нибудь высокоуровневого после Си. Или наоборот.
Если ты будешь знать, скажем, сишку и CL, все концепты С++ станут кристально ясны, в том плане, что одновременно вскроется их простота, уродливость и уродливость реализации. Но если так, то у тебя к C++ такое отвращение будет, что писать на нем тебя будет можно заставить разве что под страхом смерти, голода, или голодной смерти. Ну и правильно, потому что нефиг на нем писать, приумножать непотребства. Как профессор завещал.

[посоветуйте] Книжки по C++. От нуля к STL.

>> Ну и правильно, потому что нефиг на нем писать, приумножать непотребства. Как профессор завещал.

довольно сурово
но в целом поддерживаю
в юниксе плюсовая ниша занимает доаольно малый процент , в отличие от

[посоветуйте] Книжки по C++. От нуля к STL.

Если уж действительно решил изучить С++ (зачем только?),

1. Берёшь Страуструпа, читаешь (на вдумчивое чтение уйдёт где-то месяц)

2. Программируешь (где-то месяца два)

3. Берёшь Страуструпа, перечитываешь, понимаешь какую ересь ты программировал эти два месяца

5. Берёшь Страуструпа, перечитываешь. Ура, ты теперь знаешь язык.

6. Понимаешь, что потратил год жизни впустую

[посоветуйте] Книжки по C++. От нуля к STL.

Не знаю.. но мне мне кажется зря народ здесь так круто на с++ наехал. Я, правда, пишу в основном программы для различных расчетов. Но с++ очень доволен. Так что, по крайней мере в этой области, его обижать ни к чему. А насчет «с чего начать», то лучше действительно с википедии и книжек типа С. Прата «Язык программирования C++. Лекции и упражнения». Далее, я думаю, неплохо было бы почитать что-нибудь типа С.Х. Дьюхэрст «Скользкие места С++» и, конечно же, Герб Саттер «Решение сложных задач на С++» и «Новые сложные задачи на С++». Дальше опыт + гугл..

Re: [посоветуйте] Книжки по C++. От нуля к STL.

В догонку. После викиучебника по С++ можно еще прочитать Джесс Либерти, Дэвид Хорват «Освой самостоятельно С++ за 24 часа». Название совершенно идиотское и ничего вы знать через 24 часа не будете, тем более С++, но для затравки вполне ничего книжка.

[посоветуйте] Книжки по C++. От нуля к STL.

Всеже скажу, что в освоении языков (наверное не только программирования) очень важную роль играет задача. Если есть стимул, то можно и по Страуструпу. Главное — практика.

[посоветуйте] Книжки по C++. От нуля к STL.

Да, могу посоветовать «Как не нужно программировать на С++». Книжка хорошая ( 09.11.09 15:54:16 )

Re: [посоветуйте] Книжки по C++. От нуля к STL.

Липпмана советую. Самая лучшая, ИМХО, для начинающих С++ ов. (которым, кстати, я сейчас и являюсь). Шилдт хорош, но как справочник.

Re: [посоветуйте] Книжки по C++. От нуля к STL.

Абсолютно согласен с ierton насчет задач и практики.

[посоветуйте] Книжки по C++. От нуля к STL.

я уже несколько лет пишу на плюсах, все меня в нем устраивает, никаких глюков в нем не нахожу, куча либ на все случаи жизни, наверно я херновый разработчик 🙂

[посоветуйте] Книжки по C++. От нуля к STL.

Теренса Чана можешь почитать.. Есть у него кон-что по теме тоже..

[посоветуйте] Книжки по C++. От нуля к STL.

Книга Джосатиса про STL из серии must have, Мейерса лучшее читать имея хоть какой-то опыт

[посоветуйте] Книжки по C++. От нуля к STL.

>Книга Джосатиса про STL из серии must have,

удваиваю, «С++ Стандартная библиотека» самое то. Сам в свое время с нее начинал.

Ссылка на основную публикацию
Adblock
detector