Добавил:
t.me Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2 семестр / Литература / Язык программирования С++. Краткий курс. Страуструп

.pdf
Скачиваний:
9
Добавлен:
16.07.2023
Размер:
31.34 Mб
Скачать

[8]

[9]

[1 О]

[11] [12]

[13]

[14]

[15]

 

 

 

7.6. Советы

151

Раздельной компиляции шаблонов нет:

вы должны

включать

с помо­

щью директивы #include определения

шаблонов

в каждую единицу

трансляции, которая их

использует.

 

 

 

Используйте шаблоны

для выражения

контейнеров и диапазонов;

§7.3.2; [CG:T.3].

 

 

 

 

Избегайте "концептов" без значимой семантики; §7.2; [CG:T.20].

Требуйте в концепте полный набор операций; §7.2; [CG:T.21 ].

 

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

получа­

ющая переменное количество аргументов различных типов; §7.4.

Не используйте

вариативные шаблоны

ментов (предпочитайте

использовать

ции); §7.4.

 

 

для для

гомогенных этого списки

списков аргу­ инициализа­

При использовании шаблона убедитесь, что его

определение (а не толь­

ко объявление) находится

в области видимости;

§7.5.

 

Шаблоны обеспечивают

неявную типизацию

времени

компиляции;

§7.5.

 

 

 

156

Глава

8.

Обзор

библиотеки

#include<string> #include<list>

Эти строки делают доступными стандартные классы string

и list.

Стандартная библиотека определена в пространстве имен

(§3.4),

именуе­

мом

s

td.

Чтобы

использовать

средства

стандартной

библиотеки,

использует­

ся

префикс

std::.

std::string sheep {"Четыре ноги std:: list<std:: string> slogans

хорошо,

 

две

 

-

плохо!"};

{"Война

-

это

мир",

"Свобода

-

это

рабство",

"Незнание

-

сила"};

не

Для простоты я редко использую в примерах префикс s td: : явно. Я также всегда явно включаю нужные заголовочные файлы. Чтобы скомпилировать

и

запустить

фрагменты

программ

из

этой

книги,

вы

должны

включить

соот­

ветствующие

заголовочные

файлы

и

сделать

доступными

имена,

которые

они

объявляют.

Например:

#include<string>

 

using

namespace

std;

11 ОК:

здесь string

//Делаем

доступными стандартные

строки

//Делаем

имена из

std без префикса

представляет собой

std::string

 

string

s

{"С++

-

язык

программирования

общего назначения"};

Как

правило,

внесение

всех

имен

из

конкретного

пространства

имен

в гло­

бальное

-

признак

плохого

вкуса.

Однако

в

этой

книге

я

использую

только

стандартную

библиотеку,

и

программисты

должны

знать,

что

она

предлагает.

Ниже

приведен

список

заголовочных

файлов

стандартной

библиотеки;

все

их

объявления

находятся

в

пространстве

имен

s

td.

Избранные

заголовочные

файлы

стандартной

библиотеки

<algorithm>

<array>

 

<chrono>

 

<cmath>

 

<complex>

 

<filesystem>

<forward

list>

<fstream>

 

<future>

 

<ios>

 

<iostream>

сору () , find () , sort ()

 

array

 

 

duration, time_point

 

sqrt () , pow ()

 

complex,

sqrt (), pow ()

 

path

 

 

forward

list

 

fstream, ifstream, ofstream

future, promise

 

hex, dec,

scientific,

fixed,

istream,

ostream, cin, cout

defaultfloat

Глава

12

§13.4.1

§13.7

 

§14.2

 

§14.4

 

§10.10

§11.б

 

§10.7

 

§15.7

 

§10.б

 

Глава

10

8.4.

Советы

157

Окончание

табл.

Избранные

заголовочные

файлы

стандартной

библиотеки

<map> <memory> <random> <regex> <string> <set> <sstream> <stdexcept> <thread> <unordered_ <utility> <variant> <vector>

map>

map, multimap

 

 

 

unique_ptr, shared_ptr,

allocator

 

default_random_engine,

normal_distribution

regex, smatch

 

 

 

string, basic_string

 

 

set, multiset

 

 

 

istringstream,

ostringstream

 

length_ error, out_ of_ range, runtime

error

thread

 

 

 

unordered_map,

unordered_mul timap

 

move () , swap (),

pair

 

 

variant

 

 

 

vector

 

 

 

§11.5

 

§13.2.1

§14.5

 

§9.4

 

§9.2

 

§11.б

 

§10.8

 

§3.5.1

 

§15.2

 

§11.5

 

Глава

13

§13.5.1

§11.2

 

Этот список далеко неполон.

Предоставляются также заголовочные

файлы

из

стандартной

библиотеки

С,

такие

как

<stdlib.

h>.

Для

каждого

такого

заголовка

есть

также

версия

с именем с префиксом с, и удаленным . h. Эта версия, помещает свои объявления в пространство имен s td.

такая

как

<cstdlib>,

8.4.

Советы

[1] [2]

[3]

[4]

[5]

Не изобретайте

колесо

-

пользуйтесь

библиотеками;

§8.1; [CG:SL.1.]

Если у вас есть

возможность выбора,

предпочитайте

стандартную би­

блиотеку другим библиотекам; §8.1; [CG:SL.2].

 

 

Не думайте, что стандартная библиотека идеально

подходит для любой

задачи; §8.1.

 

 

 

 

 

 

Не забывайте включать

заголовочные

файлы для

используемых вами

библиотечных средств;

§8.3.

 

 

 

Помните, что средства

стандартной библиотеки находятся в простран­

стве имен std; §8.3; [CG:SL.3].