Стенли Липпман - Язык программирования C++. Пятое издание
- Название:Язык программирования C++. Пятое издание
- Автор:
- Жанр:
- Издательство:Издательский дом Вильямс
- Год:2014
- Город:Москва
- ISBN:978-5-8459-1839-0
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Стенли Липпман - Язык программирования C++. Пятое издание краткое содержание
Вы держите в руках новое издание популярного и исчерпывающего бестселлера по языку программирования С++, которое было полностью пересмотрено и обновлено под
. Оно поможет вам быстро изучить язык и использовать его весьма эффективными и передовыми способами. В соответствии с самыми передовыми и современными методиками изложения материала авторы демонстрируют использование базового языка и его стандартной библиотеки для разработки эффективного, читабельного и мощного кода.
С самого начала этой книги читатель знакомится со стандартной библиотекой С++, ее самыми популярными функциями и средствами, что позволяет сразу же приступить к написанию полезных программ, еще не овладев всеми нюансами языка. Большинство примеров из книги было пересмотрено так, чтобы использовать новые средства языка и продемонстрировать их наилучшие способы применения. Эта книга — не только проверенное руководство для новичков в С++, она содержит также авторитетное обсуждение базовых концепций и методик языка С++ и является ценным ресурсом для опытных программистов, особенно желающих побыстрей узнать об усовершенствованиях С++11.
Стенли Б. Липпман Жози Лажойе Барбара Э. Му • Узнайте, как использовать новые средства языка С++11 и стандартной библиотеки для быстрого создания надежных программ, а также ознакомьтесь с высокоуровневым программированием
• Учитесь на примерах, в которых показаны передовые стили программирования и методики проектирования
• Изучите принципы и узнайте почему язык С++11 работает именно так
• Воспользуйтесь множеством перекрестных ссылок, способных помочь вам объединить взаимосвязанные концепции и проникнуть в суть
• Ознакомьтесь с современными методиками обучения и извлеките пользу из упражнений, в которых подчеркиваются ключевые моменты, позволяющие избежать проблем
• Освойте лучшие методики программирования и закрепите на практике изученный материал
Исходный код примеров можно загрузить с веб-страницы книги на сайте издательства по адресу: http://www.williamspublishing.com
Язык программирования C++. Пятое издание - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
В данной главе представлены два важнейших библиотечных типа: string
и vector
. Тип string
— это последовательность символов переменной длины. Тип vector содержит последовательность объектов указанного типа переменной длины. Мы также рассмотрим встроенный тип массива. Как и другие встроенные типы, массивы представляют возможности аппаратных средств. В результате массивы менее удобны в использовании, чем библиотечные типы string
и vector
.
Однако, прежде чем начать исследование библиотечных типов, рассмотрим механизм, упрощающий доступ к именам, определенным в библиотеке.
3.1. Пространства имен и объявления
using
До сих пор имена из стандартной библиотеки упоминались в программах явно, т.е. перед каждым из них было указано имя пространства имен std
. Например, при чтении со стандартного устройства ввода применялась форма записи std::cin
. Здесь использован оператор области видимости ::
(см. раздел 1.2). Он означает, что имя, указанное в правом операнде оператора, следует искать в области видимости, указанной в левом операнде. Таким образом, код std::cin
означает, что используемое имя cin
определено в пространстве имен std
.
При частом использовании библиотечных имен такая форма записи может оказаться чересчур громоздкой. К счастью, существуют и более простые способы применения членов пространств имен. Самый надежный из них — объявление using
( using
declaration). Другие способы, позволяющие упростить использование имен из других пространств, рассматриваются в разделе 18.2.2.
Объявление using
позволяет использовать имена из другого пространства имен без указания префикса имя_пространства_имен ::
. Объявление using
имеет следующий формат:
using пространство_имен :: имя ;
После того как объявление using
было сделано один раз, к указанному в нем имени можно обращаться без указания пространства имен.
#include
// объявление using; при использовании имени cin теперь
// подразумевается, что оно принадлежит пространству имен std
using std::cin;
int main() {
int i;
cin >> i; // ok: теперь cin - синоним std::cin
cout << i; // ошибка: объявления using нет; здесь нужно указать
// полное имя
std::cout << i; // ok: явно указано применение cout из
// пространства имен std
return 0;
}
using
Каждое объявление using
применяется только к одному элементу пространства имен. Это позволяет жестко задавать имена, используемые в каждой программе. Например, программу из раздела 1.2 можно переписать следующим образом:
#include
// объявления using для имен из стандартной библиотеки
using std::cin;
using std::cout;
using std::endl;
int main() {
cout << "Enter two numbers:" << endl;
int v1, v2;
cin >> v1 >> v2;
cout << "The sum of " << v1 << " and " << v2
<< " is " << v1 + v2 << endl;
return 0;
}
Объявления using
для имен cin
, cout
и endl
означают, что их можно теперь использовать без префикса std::
. Напомню, что программы С++ позволяют поместить каждое объявление using
в отдельную строку или объединить в одной строке несколько объявлений. Важно не забывать, что для каждого используемого имени необходимо отдельное объявление using
, и каждое из них должно завершаться точкой с запятой.
using
Код в заголовках (см. раздел 2.6.3) обычно не должен использовать объявления using
. Дело в том, что содержимое заголовка копируется в текст программы, в которую он включен. Если в заголовке есть объявление using
, то каждая включающая его программа получает то же объявление using
. В результате программа, которая не намеревалась использовать определенное библиотечное имя, может случайно столкнуться с неожиданным конфликтом имен.
Начиная с этого момента подразумевается, что во все примеры включены объявления using
для имен из стандартной библиотеки. Таким образом, в тексте и примерах кода далее упоминается cin
, а не std::cin
.
Кроме того, для экономии места в примерах кода не будем показывать далее объявления using
и необходимые директивы #include
. В табл. А.1 приложения А приведены имена и соответствующие заголовки стандартной библиотеки, которые использованы в этой книге.
Читатели не должны забывать добавить соответствующие объявления
#include
и using
в свои примеры перед их компиляцией.
Упражнение 3.1. Перепишите упражнения из разделов 1.4.1 и 2.6.2, используя соответствующие объявления using
.
3.2. Библиотечный тип
string
Строка (string) — это последовательность символов переменной длины. Чтобы использовать тип string
, необходимо включить в код заголовок string
. Поскольку тип string
принадлежит библиотеке, он определен в пространстве имен std
. Наши примеры подразумевают наличие следующего кода:
#include
using std::string;
В этом разделе описаны наиболее распространенные операции со строками; а дополнительные операции рассматриваются в разделе 9.5.
Кроме определения операций, предоставляемых библиотечными типами, стандарт налагает также требования на эффективность их конструкторов. В результате библиотечные типы оказались весьма эффективны в использовании.
3.2.1. Определение и инициализация строк
Каждый класс определяет, как могут быть инициализированы объекты его типа. Класс может определить много разных способов инициализации объектов своего типа. Каждый из способов отличается либо количеством предоставляемых инициализаторов, либо типами этих инициализаторов. Список наиболее распространенных способов инициализации строк приведен в табл. 3.1, а некоторые из примеров приведены ниже.
string s1; // инициализация по умолчанию; s1 - пустая строка
string s2 = s1; // s2 - копия s1
string s3 = "hiya"; // s3 - копия строкового литерала
string s4(10, 'c'); // s4 - cccccccccc
Интервал:
Закладка: