ceil, ceilf, ceill (POSIX)
double ceil(double x);
float ceilf(float x);
long double ceill(long double x);
Функции округления до наименьшего целого, не меньшего, чем аргумент.
cos (POSIX)
double cos(double x);
Возвращает значение косинуса x, где x – это значение в радианах.
exp (POSIX)
double exp(double x);
Возвращает значение числа 'e' возведенного в степень x.
fabs, fabsf, fabsl (POSIX)
double fabs(double x);
float fabsf(float x);
long double fabsl(long double x);
Абсолютное значение числа с плавающей точкой.
floor, floorf, floorl (POSIX)
double floor(double x);
float floorf(float x);
long double floorl(long double x);
Наибольшее целое значение, но не большее x.
fmod (POSIX)
double fmod(double x, double y);
Функция получения остатка от деления (с плавающей точкой).
log (POSIX)
double log(double x);
Возвращает натуральный логарифм x.
log10 (POSIX)
double log10(double x);
Возвращает десятичный логарифм x.
matherr (ANSI)
int matherr(struct expection *error_info);
Пользовательская функция обработки ошибок математических операций. Описание ошибки передается в указателе на структуру <error_info>
pow (POSIX)
double pow(double x, double y);
Возвращает значение x в степени y.
rand, srand <stdlib.h>
int rand(void);
void srand(unsigned int seed);
rand() – возвращает псевдослучайное число в диапазоне от нуля до RAND_MAX.
srand() – устанавливает свой аргумент как основу (seed) для новой последовательности псевдослучайных целых чисел, возвращаемых функцией rand().
sin (POSIX)
double sin(double x);
Возвращает значение синуса аргумента x, где x указан в радианах.
sqrt (POSIX)
double sqrt(double x);
Функция вычисления квадратного корня.
tan (POSIX)
double tan(double x);
Возвращает тангенс аргумента x, где x задан в радианах.
fopen, fdopen, freopen (POSIX) <stdio.h>
FILE *fopen(const char *path, const char *mode);
FILE *fdopen(int fildes, const char *mode);
FILE *freopen(const char *path, const char *mode, FILE *stream);
fopen – открывает файл с именем path и связывает его с потоком.
fdopen – связывает поток с существующим описателем файла <fildes>.
freopen – открывает файл с именем path и связывает его с потоком stream. Исходный поток (если такой существовал) закрывается.
fclose (POSIX) <stdio.h>
int fclose( FILE *stream);
Закрывает поток <stream>.
feof (POSIX) <stdio.h>
int feof(FILE *stream);
Возвращает не ноль если достигнут конец файла (EOF) потока <stream>.
ferror (POSIX) <stdio.h>
int ferror(FILE *stream);
Возвращает не ноль если установлен признак ошибки чтение потока.
fgetc, getc, getchar (POSIX) <stdio.h>
int fgetc(FILE *stream);
int getc(FILE *stream);
int getchar(void);
Считывает символ из потока <stream> или из stdin.
fgets, gets (POSIX) <stdio.h>
char *fgets(char *restrict s, int n, FILE *restrict stream);
char *gets(char *s);
Чтение строки из потока <stream> или из STDIN в буфер <s> размером <n>.
fgetwc, getwc (POSIX) <stdio.h, wchar.h>
wint_t fgetwc(FILE *stream);
wint_t getwc(FILE *stream);
Считывает широкий символ из потока <stream>.
fgetws (POSIX) <wchar.h>
wchar_t *fgetws(wchar_t *ws, int n, FILE *stream);
Чтение строки широких символов из потока <stream> в буфер <ws> размером <n>.
fprintf (POSIX) <stdio.h>
int fprintf(FILE *stream, const char *format, ...);
Осуществляет форматированный вывод в поток <stream> (Табл.10).
fputc, putc (POSIX) <stdio.h>
int fputc(int c, FILE *stream);
int putc(int c, FILE *stream);
Помещает символ в поток <stream>.
fputs, puts (POSIX) <stdio.h>
int fputs(const char *restrict s, FILE *restrict stream);
int puts(const char *s);
Помещает строку <s> в поток <stream> или в STDOUT.
fputwc, putwc (POSIX) <stdio.h, wchar.h>
wint_t fputwc(wchar_t wc, FILE *stream);
wint_t putwc(wchar_t wc, FILE *stream);
Помещает широкий символ в поток <stream>.
fputws (POSIX) <wchar.h>
int fputws(const wchar_t *ws, FILE *stream);
Помещает строку широких символов <s> в поток <stream>.
fread (POSIX) <stdio.h>
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
Чтение блоков данных <nmemb> размером <size> каждый из потока <stream> в буфер <ptr>. Возвращается количество удачно прочитаных блоков.
fseek, fseeko, fsetpos (POSIX) <stdio.h>
int fseek(FILE *stream, long offset, int whence);
int fseeko(FILE *stream, off_t offset, int whence);
int fsetpos(FILE *stream, const fpos_t *pos);
Установка позиции в потоке <stream> в соответствии с правилом <whence> и смещением <offset>. В случае с fsetpos позиция устанавливается из структуры <pos>.
fflush (POSIX) <stdio.h>
int fflush(FILE *stream);
«Сбрасывает» буферы потока <stream>.
ftell, ftello, fgetpos (POSIX) <stdio.h>
long ftell(FILE *stream);
off_t ftello(FILE *stream);
int fgetpos(FILE *restrict stream, fpos_t *restrict pos);
Получение текущей позиции в потоке <stream>. В случае с fgetpos выполняется заполнение структуры <pos>.
fwrite (POSIX) <stdio.h>
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
Запись в поток <stream> блоков данных <nmemb> размером <size> каждый из буфера <ptr>. Возвращается количество удачно записанных блоков.
perror (POSIX) <stdio.h>
void perror(const char *s);
Выводит в стандартный поток ошибки сообщения, описывая ошибку, произошедшую при последнем системном вызове или вызове библиотечной функции.
rewind (POSIX) <stdio.h>
void rewind(FILE *stream);
Сброс указателя позиции потока <stream>.
setbuf, setvbuf (POSIX) <stdio.h>
void setbuf(FILE *restrict stream, char *restrict buf);
int setvbuf(FILE *restrict stream, char *restrict buf, int type, size_t size);
Установка правила буферизации потока <stream>. Если <buf> равно NULL, то буферизации отключается. Режим буферизации указывается в <type>: _IOFBF(полная буферизация), _IOLBF(построчная), _IONBF(отсутствие).
chdir, fchdir (POSIX) <unistd.h>
int chdir(const char *path);
int fchdir(int fd);
Установка текущей директории <path>, <fd>.
ftw, nftw <ftw.h>
int ftw(const char *dir, int (*fn)(const char *file, const struct stat *sb, int flag), int depth);
int nftw(const char *dir, int (*fn)(const char *file, const struct stat *sb, int flag, struct FTW *s), int depth, int flags);
Перемещается по дереву каталогов, начиная с указанного каталога <dir>. Для каждого найденного элемента дерева вызываются: <fn()> с указанием полного имени этого элемента, указатель на структуру элемента <stat> и целое число. Функция nftw() выполняет то же самое, что и ftw(), только имеет еще один параметр, flags, то есть вызывает свои функции еще с одним параметром.
getcwd (POSIX) <unistd.h>
char *getcwd(char *buf, size_t size);
Копирует абсолютный путь к текущему рабочему каталогу в массив <buf>, имеющий длину <size>.
mkdir (POSIX) <sys/stat.h, sys/types.h>
int mkdir(const char *pathname, mode_t mode);
Создаёт каталог <pathname> с режимом <mode>.
opendir, closedir (POSIX) <sys/types.h, dirent.h>
DIR *opendir(const char *name);
int closedir(DIR *dir);
Открывает/закрывает поток каталога, соответствующий каталогу <name>.
readdir (POSIX) <sys/types.h, dirent.h>
struct dirent *readdir(DIR *dir);
Возвращает указатель <dir> на следующую запись каталога.
rmdir (POSIX) <unistd.h>
int rmdir(const char *pathname);
Удаляет каталог <pathname>.
access (POSIX) <unistd>
int access(const char *pathname, int mode);
Проверка, имеет ли процесс <pathname> права <mode> на чтение(R_OK), запись(W_OK), выполнение(X_OK) или существование файла(F_OK).
close (POSIX) <unistd.h>
int close(int fd);
Закрывает открытый описатель файла <fd>.
creat (POSIX) <sys/types.h, sys/stat.h, fcntl.h>
int creat(const char *pathname, mode_t mode);
Создаёт файл <pathname> и возвращает его описатель.
dup, dup2 (POSIX) <unistd.h>
int dup(int oldfd);
int dup2(int oldfd, int newfd);
dup – предоставляет новому описателю наименьший свободный номер. dup2 – делает <newfd> копией <oldfd> (если это необходимо), закрывая newfd.
fcntl (POSIX) <unistd.h, fcntl.h>
int fcntl(int fildes, int cmd, ...);
Выполняет различные операции <cmd> над файловым дескриптором <fildes>.
flock (BSD) <sys/file.h>
int flock(int fd, int operation);
Устанавливает или снимает <operation> «мягкую» блокировку открытого файла <fd>.
fsync, fdatasync (POSIX) <unistd.h>
int fsync(int fd);
int fdatasync(int fd);
fsync – копирует все части файла, находящиеся в памяти, на устройство <fd>. fdatasync – тоже что и fsync, но без метаданных.
fileno (ANSI) <stdio.h>
int fileno(FILE *stream);
Возвращает описатель <stream>.
link (POSIX) <unistd.h>
int link(const char *oldpath, const char *newpath);
Создание ссылки <newpath> на файл <oldpath>.
lseek (POSIX) <sys/types.h, unistd.h>
off_t lseek(int fildes, off_t offset, int whence);
Устанавливает позицию чтения/записи информации в файле.
mknod (BSD) <sys/types.h, sys/stat.h, fcntl.h, unistd.h>
int mknod(const char *pathname, mode_t mode, dev_t dev);
Создаёт файл (обычный файл, файл устройства или именованный канал) <pathname>, с правами доступа <mode> и дополнительной информацией <dev>.
open (POSIX) <sys/types.h, sys/stat.h, fcntl.h>
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
Открывает файл <pathname> и возвращает описатель файла.
pathconf, fpathconf (POSIX) <unistd.h>
long pathconf(char *path, int name);
long fpathconf(int filedes, int name);
Получение значения конфигурационной опции для указанного файла <path>, <filedes>. Конфигурационные опции:
read, readv (POSIX) <unistd.h, sys/uio.h>
ssize_t read(int fd, void *buf, size_t count);
int readv(int fd, const struct iovec * vector, int count);
Записывает <count> байтов файлового описателя <fd> в буфер <buf> или вектор <vector>.
readlink (POSIX) <unistd.h>
ssize_t readlink(const char *restrict path, char *restrict buf, size_t bufsize);
Помещает содержимое символьной ссылки <path> в буфер <buf> длиной <bufsiz>.
remove (ANSI,POSIX) <stdio.h>
int remove(const char *pathname);
Удаляет имя файла и, возможно, сам файл.
rename (ANSI) <unistd.h>
int rename(const char *oldpath, const char *newpath);
Изменяет имя или расположение файла <oldpath> на <newpath>.
select (POSIX) <sys/time.h, sys/types.h, unistd.h>
int select(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
int pselect(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, const struct timespec *timeout, sigset_t *sigmask);
Ждут изменения статуса нескольких файловых описателей в течении <timeout>. n – на единицу больше самого большого номера описателей из всех наборов. Для манипуляции набором существуют 4 макроса:
sendfile (*) <sys/sendfile.h>
ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count);
Производит чтение данных из <in_fd> по смещению <offset> длиной <count> и запись их в <out_fd>.
stat, fstat, lstat (POSIX) <sys/types.h, sys/stat.h, unistd.h>
int stat(const char *file_name, struct stat *buf);
int fstat(int filedes, struct stat *buf);
int lstat(const char *file_name, struct stat *buf);
stat – возвращает информацию о файле <file_name> и заполняет буфер <buf>;
lstat – дополнительно информацию о ссылке;
fstat – информацию о <filedes>.
statvfs, fstatvfs (POSIX) <sys/statvfs.h>
int statvfs(const char *path, struct statvfs *buf);
int fstatvfs(int fd, struct statvfs *buf);
Получение информации о файловой системе на которой расположен файл <path>, <fd>.
symlink (POSIX) <unistd.h>
int symlink(const char *oldpath, const char *newpath);
Создание символьной ссылки <newpath> на файл <oldpath>.
write, writev (POSIX) <unistd.h, sys/uio.h>
ssize_t write(int fd, const void *buf, size_t count);
int writev(int fd, const struct iovec * vector, int count);
Записывает <count. байтов из буфера <buf> или вектора <vector> в файл <fd>.
unlink (POSIX) <unistd.h>
int unlink(const char *pathname);
Удаляет имя файла из файловой системы. Если это имя было последней ссылкой на файл и нет ни одного процесса, которые бы открыли этот файл, то файл удаляется.
Таблица 10. Стандартные потоки ввода-вывода
| Имя | Назначение |
| stdin(0) | Стандартный вход; |
| stdout(1) | Стандартный выход (буфериз.); |
| stderr(2) | Стандартный выход ошибок (небуфериз.); |
mkstemp (BSD) <stdlib.h>
int mkstemp(char *template);
Создает временный файл с уникальным именем определённым <template>. <template> должен иметь в конце символы “XXXXXX”. Возвращает описатель fd созданного файла и заполняет XXXXXX, в template, сгенерированными символами. Нуждается в удалении!
mktemp (POSIX) <stdlib.h>
char *mktemp(char *template);
Создает временный файл с уникальным именем определённым <template>. <template> должен иметь в конце символы “XXXXXX”. Возвращает имя созданного файла.
tmpfile (POSIX) <stdio.h>
FILE *tmpfile (void);
Создает уникальное имя временного файла с помощью префикса пути P_tmpdir, определенного в <stdio.h>. Файл автоматически удаляется при его закрытии или в случае завершения основной программы.
va_arg (ANSI)
type va_arg(va_list arg_ptr, type);
Значение параметра типа <type> выбирается из стека <arg_ptr>, по одному за каждое обращение к функции. Макрокоманда <va_arg> может использоваться любое число раз для отыскания параметров в списке.
va_end (ANSI)
void va_end(va_list arg_ptr);
Присваивает аргументу-указателю <arg_ptr> значение запрещающее его последующее использование (без повторной инициализации va_start).
va_start (ANSI)
void va_start(va_list arg_ptr, prev_param);
Назначает указателю <arg_ptr> адрес первого параметра в стеке входных параметров <prev_param>.
alarm (SVr4, SVID, POSIX, X/OPEN, BSD 4.3) <unistd.h>
unsigned int alarm(unsigned int seconds);
Настраивающая таймер на подачу сигнала ALARM.
asctime, ctime (POSIX) <time.h>
char *asctime(const struct tm *timeptr);
char *ctime(const time_t *timep);
Преобразует время <timep>, <timeptr> в строку в формате «Wed Jun 30 21:49:08 1993».
clock_gettime, clock_getres, clock_settime (POSIX) <time.h>
int clock_getres(clockid_t clock_id, struct timespec *res);
int clock_gettime(clockid_t clock_id, struct timespec *tp);
int clock_settime(clockid_t clock_id, const struct timespec *tp);
Функции манипуляции системными часами <clock_id>. В соответствии со стандартом POSIX должны поддерживаться часы: CLOCK_MONOTONIC, CLOCK_MONOTONIC_HR, CLOCK_REALTIME и CLOCK_REALTIME_HR.
daylight (POSIX) <time.h>
extern int daylight;
Переход на летнее время.
gmtime, localtime (POSIX) <time.h>
struct tm *gmtime(const time_t *timep);
struct tm *localtime(const time_t *timep);
Преобразуют календарное время <timep> во время по Гринвичу и локальное;
mktime (POSIX) <time.h>
time_t mktime(struct tm *timeptr);
Преобразует структуру локального представления <timeptr> времени в структуру календарного представления.
setitimer, getitimer (POSIX.1–2001) <sys/time.h>
int setitimer(int which, const struct itimerval *value, struct itimerval *ovalue);
int getitimer(int which, struct itimerval *value);
Получить и установить значение value интервального таймера <which>. Старое значение таймера сохраняется в <ovalue>. Типы таймеров <which>:
strftime (ANSI) <time.h>
size_t strftime(char *s, size_t max, const char *format, const struct tm *tm);
Форматирует время <tm> в соответствии с указанным форматом <format> и помещает результат в символьный массив <s> размером <max>.
time (POSIX) <time.h>
time_t time(time_t *t);
Возвращает/устанавливает текущее время <t>
timer_create (POSIX) <time.h, signal.h>
int timer_create(clockid_t clockid, struct sigevent *restrict evp, timer_t *restrict timerid);
Создание таймера используя часы <clockid> (CLOCK_REALTIME, CLOCK_MONOTONIC) в соответствии со структурой уведомления <evp>. В результате успешного создания таймера возвращается идентификатор <timerid>.
timer_delete (POSIX) <time.h>
int timer_delete(timer_t timerid);
Удаление таймера ранее созданного функцией timer_create().
timer_gettime (POSIX) <time.h>
int timer_gettime(timer_t timerid, struct itimerspec *value);
Получение значения таймера, созданного функцией timer_create(), в <value>.
timer_settime (POSIX) <time.h>
//int timer_settime(timer_t timerid, int flags, const struct itimerspec *restrict value, struct itimerspec *restrict ovalue);
Установка таймера, созданного функцией timer_create(), в значение <value>, предварительно сохранив предыдущее значение в <ovalue>.
times (POSIX) <sys/times.h>
clock_t times(struct tms *buf);
Возвращает текущие состояние счетчика тиков, а также информации о времени выполнения процесса и его порожденных процессов в <buf>.
timezone (POSIX) <time.h>
long int timezone;
Содержит разницу, в секундах, между локальным временем и по Гринвичу.
tzname (POSIX) <time.h>
extern char *tzname[2];
Имя текущей временной зоны.
sleep, usleep, nanosleep (POSIX) <unistd.h, time.h>
unsigned int sleep(unsigned int seconds);
void usleep(unsigned long usec);
int nanosleep(const struct timespec *req, struct timespec *rem);
Функция задаёт интервал паузы: seconds – секунды, usec – микросекунды и req – наносекундах. В rem помещается реально прошедшее время.
isalnum (ANSI)
int isalnum(int c);
Проверяет символ на принадлежность к текстовым символам.
isalpha (ANSI)
int isalpha(int c);
Проверяет символ на принадлежность к алфавитным символам (в стандартном окружении “C”).
isascii (ANSI)
int isascii(int c);
Проверяет, является ли <c> 7-битным unsigned char, значение которого попадает в таблицу символов ASCII.
iscntrl (ANSI)
int iscntrl(int c);
Проверяет, является ли символ управляющим.
isdigit (ANSI)
int isdigit(int c);
Проверяет, является ли символ цифрой.
isgraph (ANSI)
int isgraph(int c);
Проверяет, является ли символ печатаемым (не пробел).
islower (ANSI)
int islower(int c);
Проверяет, является ли символ символом нижнего регистра.
isprint (ANSI)
int isprint(int c);
Проверяет, является ли символ печатаемым (включая пробел).
ispunct (ANSI)
int ispunct(int c);
Проверяет, является ли символ печатаемым (не должен быть пробелом или текстовым символом).
isspace (ANSI)
int isspace(int c);
Проверяет, являются ли символы неотображаемыми.
isupper (ANSI)
int isupper(int c);
Проверяет, расположен ли символ в верхнем регистре.
isxdigit (ANSI)
int isxdigit(int c);
Проверяет, принадлежит ли символ к шестнадцатеричному числу.
toascii (ANSI)
int toascii(int c);
Преобразует <c> в 7-битное значение unsigned char, т.е. превращает его в ASCII-символ посредством «сбрасывания» старшего бита.
toupper, tolower (ANSI)
int toupper(int c);
int tolower(int c);
Преобразует символ <c> к верхнему или нижнему регистру.
atof (POSIX) <stdlib.h, cstdlib>
double atof(const char *nptr);
Преобразует строку <nptr> в вещественное число типа double.
atoi, atol, atoll, atoq (POSIX) <stdlib.h, cstdlib>
int atoi(const char *nptr);
long atol(const char *nptr);
long long atoll(const char *nptr);
long long atoq(const char *nptr);
Преобразуют строку в целое число.
bzero (BSD) <string.h>
void bzero(void * s, size_t n );
Заполняет нулями байты строки.
ecvt, fcvt, gcvt <stdlib.h, cstdlib>
char *ecvt(double number, int ndigits, int *decpt, int *sign);
char *fcvt(double number, int ndigits, int *decpt, int *sign);
char *gcvt(double number, size_t ndigit, char *buf);
Преобразует число с плавающей точкой в строку.
strcat, strncat (POSIX) <string.h>
char *strcat(char *dest, const char *src);
char *strncat(char *dest, const char *src, size_t n);
Добавляет строку <str> (n символов для strncat) к строке <dest>, перезаписывая символ окончания в конце <dest> и добавляя к строке символ окончания.
strchr,strrchr (POSIX) <string.h>
char *strchr(const char *s, int c);
char *strrchr(const char *s, int c);
Определение местонахождения символа в строке.
strcmp, strncmp (POSIX) <string.h>
int strcmp(const char *s1, const char *s2);
int strncmp(const char *s1, const char *s2, size_t n);
Сравнивает две (n символов для strncmp) строки: s1 и s2. Возвращая целое число, которое меньше, больше нуля или равно ему, если s1 соответственно меньше, больше или равно s2.
strcpy, strncpy (POSIX) <string.h>
char *strcpy(char *dest, const char *src);
char *strncpy(char *dest, const char *src, size_t n);
Копирует строку (n символов для strncpy), на которую указывает <src> (включая завершающий символ окончания), в массив, на который указывает <dest>.
strdup, strndup, strdupa, strndupa (BSD) <string.h>
char *strdup(const char *s);
char *strndup(const char *s, size_t n);
char *strdupa(const char *s);
char *strndupa(const char *s, size_t n);
Дублируют строку;
strerror (POSIX) <string.h>
char *strerror(int errnum);
Возвращает строку с описанием кода ошибки, переданного в аргументе errnum.
strlen (POSIX) <string.h>
size_t strlen(const char *s);
Вычисляет длину строки <s>. Завершающий символ окончания не учитывается.
strpbrk (POSIX) <string.h>
char *strpbrk(const char *s, const char *accept);
Ищет первое совпадение в строке <s> с любым символом из строки <accept>.
strspn, strcspn (POSIX) <string.h>
size_t strspn(const char *s, const char *accept);
size_t strcspn(const char *s, const char *reject);
поиск набора символов в строке.
strstr <string.h>
char *strstr(const char *haystack, const char *needle);
Находит первую встретившуюся подстроку <needle> в строке <haystack>.
strtok, strtok_r (POSIX) <string.h>
char *strtok(char *s, const char *delim);
char *strtok_r(char *s, const char *delim, char **ptrptr);
Разбивает строку <s> на «лексемы» логические куски, такие, как слова в строке текста – разделённые символами, содержащимися в <delim>. Последующие вызовы производить с <s> = NULL.
strtod, strtof, strtold (ANSI) <stdlib.h, cstdlib>
double strtod(const char *nptr, char **endptr);
float strtof(const char *nptr, char **endptr);
long double strtold(const char *nptr, char **endptr);
Конвертируют строки ASCII в число с плавающей запятой.
strtoul, strtoull (POSIX) <stdlib.h, cstdlib>
unsigned long int strtoul(const char *nptr, char **endptr, int base);
unsigned long long int strtoull(const char *nptr, char **endptr, int base);
Конвертирует строку в беззнаковое целое число.
strxfrm (BSD) <string.h>
size_t strxfrm(char *dest, const char *src, size_t n);
Преобразует строку <src> в такую форму, что выполнение strcmp() над двумя такими строками, преобразованными посредством strxfrm(), будет таким же, как и выполнение strcoll над исходными строками.
Для работы со строками в языке C++ предусмотрен шаблонный класс basic_string из которого определяется класс string:
typedef basic_string <char> string;
typedef basic_string <wchar_t> string; \\для UNICODE
Примеры инициализации строк:
string s1("Hello"); //Строка "Hello"
string s2(8,x); //Восемь символов 'x'
string month = "March"; //Строка "March"
s = 'n' //символ 'n'
cin >> s; //вводить в <s>
getline(cin,s); //--//--
str1.assign(str2);
str1[2] = 'r'; //Присвоить 'r'
string s1(s2+"test");
Для потоковой обработки строк используются классы: <ostringstream>
outstring << S1 << S2 << S3 << 2 << 3.58;
cout << outstring.str();
instring >> S1 >> S2 >> i;
operator==, !=, >, <, >=, <=
Операторы сравнения строк.
assign
basic_string& assign (const basic_string& str, size_type pos = 0, size_type n = npos);
basic_string& assign (const charT* s, size_type n);
basic_string& assign (const charT* s);
basic_string& assign (size_type n, charT c);
Создаёт новую строку из участка старой.
append
basic_string& append(const basic_string& str, size_type pos = 0, size_type n = npos);
basic_string& append (const charT* s, size_type n);
basic_string& append (const charT* s);
basic_string& append (size_type n, charT c);
basic_string& append(InputIterator first, InputIterator last);
Добавление к строке.
at
reference at(size_type pos);
const_reference at(size_type pos) const;
Получить символ по с индексом <POS>.
begin, end
iterator begin ();
iterator end ();
Возвращает итератор;
capacity
size_type capacity() const;
Максимальный размер строки без увеличения памяти под строку.
compare
int compare (const basic_string& str, size_type pos = 0, size_type n = npos) const;
int compare (const charT* s, size_type pos, size_type n) const;
int compare (const charT* s, size_type pos = 0) const;
Сравнение строк.
copy
size_type copy (charT* s, size_type n, size_type pos = 0) const;
Копировать строку в адрес определённый указателем.
с_str
const charT* c_str() const;
Возвращает указатель на строку с нулём в конце.
data
charT* data()
Возвращает указатель на строку без нуля в конце.
empty
bool empty() const;
Проверка строки на пустоту.
erase
basic_string& erase(size_type pos = 0, size_type n = npos);
iterator erase(iterator p);
iterator erase(iterator f, iterator l);
Удаление всех символов начиная от указанной позиции.
begin, end
iterator begin();
iterator end();
Получение начального/конечного итератора.
find, rfind
size_type find(const basic_string& str, size_type pos = 0) const;
size_type rfind(const basic_string& str, size_type pos = npos) const;
Поиск сначала/конца строки.
find_first_of, find_last_of
size_type find_first_of(const basic_string& str, size_type pos = 0) const;
size_type find_last_of (const basic_string& str, size_type pos = npos) const;
Поиск сначала/конца строки одного из перечисленных символов.
find_first_not_of, find_last_not_of
size_type find_first_not_of(const basic_string& str, size_type pos = 0) const;
size_type find_last_not_of (const basic_string& str, size_type pos = npos) const;
Поиск сначала/конца первого символа отсутствующего в списке.
insert
basic_string& insert(size_type pos1, const basic_string& str, size_type pos2 = 0, size_type n = npos);
Вставка в строку части другой строки.
length, size
size_type length() const;
size_type size() const;
Длина строки.
max_size
size_type max_size() const;
Максимальная длина строки.
replace
basic_string& replace(size_type pos1, size_type n1, const basic_string& str, size_type pos2 = 0, size_type n2 = npos);
Заменить участок строки.
resize
void resize (size_type n, charT c);
void resize (size_type n);
Изменить длину строки.
substr
basic_string substr(size_type pos = 0, size_type n = npos) const;
Получение части строки;
swap
void swap (basic_string &s)
Перестановка строк.
STL представляет собой большую библиотеку шаблонов включающую в себя три ключевых компонента: контейнеры, итераторы, алгоритмы. Кроме того, STL является расширяемой библиотекой. STL избегает операторов new и delete и использует распределители памяти(allocators) для выделения и высвобождения памяти. Существует возможность создавать пользовательские распределители памяти. Типы исключений в STL:
Контейнеры делятся на три основных категории: контейнеры последовательностей, ассоциативные контейнеры и адаптеры контейнеров. Контейнеры последовательностей (sequence containers) и Ассоциативные контейнеры имеют общее название – контейнеры первого класса (first-class containers). Существует ещё четыре типа контейнеров, которые считаются «почти контейнерами» («near-containers») – С-подобные массивы, string, bitset и valarray.
Контейнерные заголовочные файлы стандартной библиотеки:
Общие имена типа typedef имеющиеся в контейнерах первого класса:
Имя | Назначение | Тип итератора |
Контейнеры последовательностей | ||
| vector | Быстрые вставки и удаление в конец контейнера, прямой доступ к любому элементу. | произв. доступ |
| deque | Быстрые вставки и удаления в начало и конец контейнера, прямой доступ к любому элементу. | произв. доступ |
| list | Двухсвязный список, быстрая вставка и удаление элементов везде. | двунапр. |
Ассоциативные контейнеры | ||
| set | Быстрый поиск, дубликаты (одинаковые ключи)не допускаются. | двунапр. |
| multiset | Быстрый поиск, допускаются дубликаты. | двунапр. |
| map | Взаимно однозначное соответствие, дубликаты не допускаются, быстрый поиск значения по ключу. | двунапр. |
| multimap | Соответствие «один ко многим», дублирование ключей допускается, быстрый поиск значения по ключу. | двунапр. |
Адаптеры контейнеров | ||
| stack | «Последним пришел, первым вышел» (LIFO) | не поддерж. |
| queue | «Первым пришел, первым вышел» (FIFO) | не поддерж. |
| priority_ queue | Элемент с наивысшим приоритетом всегда достигает выхода из очереди первым. | не поддерж. |
Имя | Назначение |
| default constructor | Конструктор для обеспечения инициализации по умолчанию. |
| copy constructor | Конструктор, который инициализирует контейнер в качестве копии существующего контейнера. |
| destructor | Деструктор контейнера. |
| empty | Проверка контейнера на пустоту. |
| max_size | Возвращает максимальное число элементов в контейнере. |
| size | Возвращает число элементов в контейнере. |
| = | Присваивает один контейнер другому. |
| <, <=, >, >=, ==, != | Сравнивает два контейнера. |
| swap | Поменять местами элементы двух контейнеров. |
Только в контейнерах первого класса | |
| begin | Возвращает iterator, либо const_iterator который ссылается на первый элемент контейнера. |
| end | Возвращает iterator, либо const_iterator который ссылается на последний элемент контейнера. |
| rbegin | Возвращает reverse_iterator, либо const_reverse_iterator который ссылается на последний элемент контейнера. |
| rend | Возвращает reverse_iterator, либо const_reverse_iterator который ссылается на позицию перед первым элементом контейнера. |
| erase | Удаляет один или несколько элементов из контейнера. |
| clear | Удаляет все элементы из контейнера. |
Классы vector и deque реализованы на базе массивов. Класс list реализует связанный список. Дополнительные операции характерные для контейнеров последовательностей:
front
front();
Возвращает ссылку на первый элемент в контейнере.
back
back();
Возвращает ссылку на последний элемент в контейнере.
push_back
push_back();
Вставляет новый элемент в конец контейнера.
pop_back
pop_back();
Выталкивает последний элемент контейнера.
Контейнер vector обеспечивает структуру данных непрерывной областью памяти. Это позволяет обеспечивает эффективный прямой доступ к любому элементу контейнера vector посредством операции индексирования []. Все алгоритмы STL могут работать с контейнером vector. Итераторы для vector обычно реализуются как указатели на элементы контейнера vector.
std::vector<int> v;
v.push_back(2);
cout << "\nРазмер вектора v: " << v.size();
std::vector<int>::const_iterator p1;
for(p1 = v.begin(); p1 != v.end(); p1++) cout << *p1 << ' ';
std::vector<int>::reverse_iterator p2;
for(p2 = v.rbegin(); p2 != v.rend(); ++p2) cout << *p2 << ' ';
int a[ 6 ] = { 1, 2, 3, 4, 5, 6 };
std::vector<int> v1(a, a+6);
std::ostream_iterator<int> output(cout," ");
std::copy(v1.begin(), v1.end(), out); //печать вектора
try
{
v1.at(100) = 777; //доступ вне массива
}
catch(std::out_of_range e)
{ cout << "\nИсключение" << e.what(); }
v1.erase(v.begin());
Контейнер list предоставляет эффективную реализацию операции вставки и удаления в любую позицию контейнера. Класс list реализуется как двухсвязный список, то есть каждый узел в list содержит указатель на предыдущий и на следующий узел. Любой алгоритм, который требует итераторов для чтения и для записи, прямых и двунаправленных итераторов, может выполняться с list. Дополнительные функции класса list:
inplace_merge
void inplace_merge(_BidirectionalIter first, _BidirectionalIter middle, _BidirectionalIter last, _Compare comp);
Объединяет две возростающие последовательности в одном и том же контейнере.
splice
splice();
Вырезает элементы из одного контейнера и помещает их в другой.
push_front
push_front();
Вставить элемент в начало контейнера.
pop_front
pop_front();
Вытолкнуть элемент с начала контейнера.
remove
remove();
Удалить элемент из начала контейнера.
merge
_OutputIter merge(_InputIter1 first1, _InputIter1 last1, _InputIter2 first2, _InputIter2 last2, _OutputIter result)
Объединяет две возростающие последовательности в одну.
sort
void sort(_RandomAccessIter first, _RandomAccessIter last);
Сортировка элементов в возрастающем порядке.
std::list<int> Values, otherValues;
Values.push_front(1);
Values.push_back(2);
values.sort();
Контейнер deque объединяет многие возможности классов vector и list. Реализуется на основе очереди с двумя концами и обеспечивает эффективный индексный доступ с эффективной операцией вставки в начало и конец контейнера. Класс deque обеспечивает поддержку итераторов произвольного доступа. Наиболее часто deque используется в качестве очереди FIFO.
std::deque<double> values;
std::ostream_iterator<double> output(cout," ");
values.push_front(2.2);
values.push_back(1.1);
for(int i=0; i < values.size(); ++i)
cout << values[i] << ' ';
values.pop_front();
values[1]=5.4;
Ассоциативные контейнеры STL предназначены для обеспечения прямого доступа с целью сохранения и выборки элементов с помощью ключей (ключи поиска). Имеется четыре ассоциативных контейнера: multiset, set, multimap, map. В каждом контейнере ключи сохраняются упорядоченными. Ассоциативные контейнеры поддерживают дополнительные функции:
equal_range
pair<_ForwardIter, _ForwardIter> equal_range(_ForwardIter first, _ForwardIter last, const _Tp& val);
Возвращает пару прямых итераторов, содержащих результаты lower_bound и upper_bound.
find
find();
Поиск ключа.
lower_bound
_ForwardIter __lower_bound(_ForwardIter first, _ForwardIter last, const _Tp& val, _Distance*)
Определения позиции первого вхождения указанного ключа.
upper_bound
_ForwardIter upper_bound(_ForwardIter first, _ForwardIter last, const _Tp& val)
Определения позиции за последним вхождением указанного ключа.
count
count();
Возвращает количество указанных ключей в контейнере.
Контейнеры multiset и set используются для быстрого сохранение и выборки ключей. Контейнер multiset допускает использование одинаковых ключей. Упорядочение элементов определяется компараторным объектом-функцией. Контейнеры поддерживает двунаправленные итераторы (но не итераторы произвольного доступа).
int a[10] = {7,22,9,1,18,30,100,22,85,13};
typedef std::multiset<int, std::<int> > ims;
ims intMultiset;
std::ostream_iterator<int> output(cout, " ");
intMultiset.insert(15);
result=intMultiset.find(20);
if ( result != intMultiset.end() ) cout << "Найдено значение";
intMultiset.insert(a, a+10);
std::copy(intMultiset.begin(),intMultiset.end(), output);
Контейнеры multimap и map используются для быстрого сохранения и нахождения ключей и ассоциированных значений (пара ключ/значение). При вставке в эти контейнеры используется объект pair. Контейнер multimap позволяет ассоциировать несколько значений с одним ключем. Упорядочение элементов определяется компараторным объектом-функцией. Контейнеры поддерживает двунаправленные итераторы (но не итераторы произвольного доступа).
typedef std::multimap<int, double, std::less<int> > mmid;
mmid pairs;
pairs.insert(mmid::value_type(15, 2.7) );
for(mmid::const_iterator iter = pairs.begin();
iter != pairs.end(); ++iter)
cout << iter->first << '\t' << iter->second << '\n';
pairs[25]=45.65;
STL предоставляет три адаптера контейнера – stack, queue, priority_queue. Адаптеры не являются контейнерами первого класса, поскольку они не предоставляют реализации фактической структуры данных в которой могут сохраняться элементы, и поскольку адаптеры не поддерживают итераторы. Все три класса адаптеров предоставляют функции-члены push и pop, которые реализуют соответствующий метод вставки элемента.
Адаптер stack обеспечивает структуру LIFO и может быть реализован с любым из контейнеров последовательности. Адаптер queue обеспечивает структуру FIFO и может быть реализован с контейнерами list и deque. Адаптер priority_queue обеспечивает очередь в которой наиболее приоритетное значение всегда будет удаляться первым. priority_queue может быть реализован с контейнерами vector и deque. Сравнение элементов выполняется с помощью функции-объекта less<T>.
std::stack<int> intDequeStack;
std::stack<int, std::vector<int> > intVectorStack;
std::stack<int, std::list<int> > intListStack;
intDequeStack.push(23);
intVectorStack.push(23);
intListStack.push(34);
Итераторы схожи с указателями и используются для указания на элементы контейнеров первого класса. STL контейнеры первого класса предоставляют функции-члены begin() и end(), которые возвращают итератор указывающий соответственно на первый и последний элемент контейнера. Если итератор i указывает на определённый элемент, то ++i указывает на «следующий» элемент, а *i ссылается на элемент, на который указывает i. Итератор, полученый из функции end(), может использоваться в сравнении на равенство и неравенство для определения окончания «движущегося итератора». Для ссылки на элемент контейнера используется объект типа iterator или const_iterator.
Имя | Назначение |
Все итераторы | |
| ++p | Преинкримент итератора |
| p++ | Постинкримент итератора |
Итераторы ввода | |
| *p | Разыменование итератора |
| p=p1 | Присвоение итератора итератору |
| p==p1 | Сравнение итераторов на равенство |
| p!=p1 | Сравнение итераторов на неравенство |
Итераторы вывода | |
| *p | Разыменование итератора |
| p=p1 | Присвоение итератора итератору |
Однонаправленные итераторы | |
| * | Обеспечивают все функциональные возможности итераторов ввода и вывода |
Двунаправленные итераторы | |
| -p | Предекремент итератора |
| p- | Постдекремент итератора |
Итераторы с произвольным доступом | |
| p+=i | Инкремент итератора p на i позиций |
| p-=i | Декремент итератора p на i позиций |
| p+i | Итератор помещается на позицию p+i |
| p-i | Итератор помещается на позицию p-i |
| p[i] | Возвращение ссылку на элемент, смещённый от p на i позиций |
| p<p1, p<=p1, p>p1, p>=p1 | Сравнение итераторов |
Категории итераторов:
Категория итератора, поддерживаемая каждым контейнером, определяет, может ли этот контейнер использоваться со специфическими алгоритмами в STL.
Контейнеры инкапсулируют некоторые базовые операции, но STL-алгоритмы реализуются независимо от контейнеров. Алгоритмы оперируют элементами контейнеров только с помощью итераторов. Можно создавать собственные алгоритмы.
copy
copy();
Копирование.
copy_backward
_BidirectionalIter2 __copy_backward(_BidirectionalIter1 first, _BidirectionalIter1 last, _BidirectionalIter2 result, bidirectional_iterator_tag, _Distance*)
Обратное копирование части одного контейнера в другой контейнер.
fill
void fill(_ForwardIter first, _ForwardIter last, const _Tp& value);
Заполняет все элементы контейнера значением <value>.
fill_n
_OutputIter fill_n(_OutputIter first, _Size n, const _Tp& value);
Заполняет указанные элементы контейнера значением <value>.
generate
void generate(_ForwardIter first, _ForwardIter last, _Generator gen)
Заполняет все элементы контейнера значением возвращаемым функцией <gen>.
generate_n
generate_n();
Заполняет указанные элементы контейнера значением возвращаемым функцией <gen>.
iter_swap
void iter_swap(_ForwardIter1 a, _ForwardIter2 b);
Перестановка значений контейнера (по ссылке).
includes
bool includes(_InputIter1 first1, _InputIter1 last1, _InputIter2 first2, _InputIter2 last2);
Проверяет находятся ли элементы второго множества в первом.
next_permutation
bool next_permutation(_BidirectionalIter first, _BidirectionalIter last);
Следующая перестановка в лексикографическом порядке.
prev_permutation
bool prev_permutation(_BidirectionalIter first, _BidirectionalIter last);
Предыдущая перестановка в лексикографическом порядке.
partition
_ForwardIter partition(_ForwardIter first, _ForwardIter last, _Predicate pred);
Разделение диапазонов элементов.
remove
_ForwardIter remove(_ForwardIter first, _ForwardIter last, const _Tp& value);
Удаление из указанного участка контейнера всех указанных объектов <value>
remove_copy
_OutputIter remove_copy(_InputIter first, _InputIter last, _OutputIter result, const _Tp& value);
Перенос из указанного участка контейнера в другой контейнер всех указанных объектов <value>.
remove_copy_if
remove_copy_if();
Перенос из указанного участка контейнера в другой контейнер объектов выбранных функцией сравнения <pred>.
remove_if
_ForwardIter remove_if(_ForwardIter first, _ForwardIter last, _Predicate pred);
Удаление из указанного участка контейнера объектов выбранных функцией сравнения <pred>
replace
void replace(_ForwardIter first, _ForwardIter last, const _Tp& old_value, const _Tp& new_value);
Производит замену объекта <old_value> на <new_value> по указанному участку контейнера.
replace_copy
_OutputIter replace_copy(_InputIter first, _InputIter last, _OutputIter result, const _Tp& old_value, const _Tp& new_value);
Производит замену объекта <old_value> на <new_value> по указанному участку контейнера и помещений старых значений в контейнер <result>.
replace_copy_if
_OutputIter replace_copy_if(Iterator first, Iterator last, _OutputIter result, _Predicate pred, const _Tp& new_value);
Производит замену объекта выбраного функцией <pred> на <new_value> по указанному участку контейнера и помещений старых значений в контейнер <result>.
replace_if
void replace_if(_ForwardIter __first, _ForwardIter last, _Predicate pred, const _Tp& new_value);
Производит замену объекта выбраного функцией <pred> на <new_value> по указанному участку контейнера.
reverse
void reverse(_BidirectionalIter first, _BidirectionalIter last, bidirectional_iterator_tag);
Инвертирование последовательности указанных элементов контейнера./
reverse_copy
_OutputIter reverse_copy(_BidirectionalIter first, _BidirectionalIter last, _OutputIter result);
Копирует указанные элементы в обратном порядке.
rotate
_ForwardIter rotate(_ForwardIter first, _ForwardIter middle, _ForwardIter last);
Ротация элементов.
rotate_copy
_OutputIter rotate_copy(_ForwardIter first, _ForwardIter middle, _ForwardIter last, _OutputIter result);
Ротация элементов с копированием.
set_difference
_OutputIter set_difference(_InputIter1 first1, _InputIter1 last1, _InputIter2 first2, _InputIter2 last2, _OutputIter result);
Определение элементов из первого множества отсутствующих во втором.
set_intersection
_OutputIter set_intersection(_InputIter1 first1, _InputIter1 last1, _InputIter2 first2, _InputIter2 last2, _OutputIter result);
Определение элементов из первого множества присутствующих во втором.
set_symmetric_difference
_OutputIter set_symmetric_difference(_InputIter1 first1, _InputIter1 last1, _InputIter2 first2, _InputIter2 last2, _OutputIter result);
Определение элементов из первого множества отсутствующих во втором и элементов второго отсутствующих в первом.
set_union
_OutputIter set_union(_InputIter1 first1, _InputIter1 last1, _InputIter2 first2, _InputIter2 last2, _OutputIter result);
Создаёт множество отсортированных элементов их двух контейнеров в третьем.
stable_partition
_ForwardIter stable_partition(_ForwardIter first, _ForwardIter last, _Predicate pred);
Подобна partition.
swap
void swap(_Tp& a, _Tp& b);
Перестановка значений контейнера.
swap_ranges
_ForwardIter2 swap_ranges(_ForwardIter1 first1, _ForwardIter1 last1, _ForwardIter2 first2);
Перестановка группы элементов контейнера.
transform
transform();
-//-
unique
_ForwardIter unique(_ForwardIter first, _ForwardIter last);
Удаляет из контейнера одинаковые элементы
unique_copy
_OutputIter unique_copy(_InputIter first, _InputIter last, _OutputIter result, _Tp*);
Копирует все уникальные элементы в другой контейнер.
adjacent_find
_ForwardIter adjacent_find(_ForwardIter first, _ForwardIter last, _BinaryPredicate binary_pred);
Возвращает итератор для чтения, указывающий на первый из двух идентичных смежных элементов в последовательности.
equal
inline bool equal(_InputIter1 first1, _InputIter1 last1,_InputIter2 first2);
Сравнение указанных участков двух контейнеров.
find
_InputIter find(_InputIter first, _InputIter last, const _Tp& val, input_iterator_tag);
Возвращает положение искомого значения <val>
find_each
find_each();
-//-
find_end
find_end();
-//-
find_first_of
find_first_of();
-//-
find_if
InputIter find_if(_InputIter first, _InputIter last, _Predicate pred, input_iterator_tag);
Возвращает положение значения определённого функцией <pred>.
lexicographical_compare
bool lexicographical_compare(_InputIter1 first1, _InputIter1 last1, _InputIter2 first2, _InputIter2 last2);
Используется для лексикографического сравнения двух массивов символов.
max
const _Tp& max(const _Tp& a, const _Tp& b);
Определение максимального значения.
min
const _Tp& min(const _Tp& a, const _Tp& b);
Определения минимального значения.
mismatch
pair<_InputIter1, _InputIter2> mismatch(_InputIter1 first1, _InputIter1 last1, _InputIter2 first2);
Выполняет сравнение указанных участков двух контейнеров и возвращает пару итераторов указывающих различные позиции контейнеров.
std::pair<std::vector<int>::iterator, std::vector<int>::iterator> location;
location = std::mismatch(v1.begin(),v1.end(),v3.begin());
search
search();
-//-
search_n
search_n();
-//-
accumulate
_Tp accumulate(_InputIterator first, _InputIterator last, _Tp init);
Суммирование значений указанной области контейнера.
adjacent_difference
_OutputIterator adjacent_difference(_InputIterator first, _InputIterator last, _OutputIterator result);
Вычисление разницы между парой смежных элементов
count
void count(_InputIter first, _InputIter last, const _Tp& value,_Size& n);
Выполняет подсчет количества объектов <value> в указанной области контейнера.
count_if
void count_if(_InputIter first, _InputIter last, _Predicate pred, _Size& n);
Выполняет подсчет количества объектов выбранных функцией <pred> в указанной области контейнера.
for_each
_Function for_each(_InputIter first, _InputIter last, _Function f);
Применение функции <f> к указанным элементам контейнера. Общая функция должна принимать текущий элемент в качестве аргумента и не должна модифицировать этот элемент.
inner_product
_Tp inner_product(_InputIterator1 first1, _InputIterator1 last1, _InputIterator2 first2, _Tp init);
Вычисление суммы произведений двух последовательностей.
max_element
_ForwardIter max_element(_ForwardIter first, _ForwardIter last);
Возвращает указатель на максимальный элемент в контейнере.
min_element
_ForwardIter min_element(_ForwardIter first, _ForwardIter last);
Возвращает указатель на минимальный элемент в контейнере.
nth_element
void nth_element(_RandomAccessIter first, _RandomAccessIter nth, _RandomAccessIter last);
Разделение диапазонов элементов.
partial_sum
_OutputIterator partial_sum(_InputIterator first, _InputIterator last, _OutputIterator result);
Вычисление суммы элементов двух контейнеров с накоплением.
partial_sort
void partial_sort(_RandomAccessIter first, _RandomAccessIter middle, _RandomAccessIter last);
Сортировка части последовательности.
partial_sort_copy
_RandomAccessIter partial_sort_copy(_InputIter first, _InputIter last, _RandomAccessIter result_first, _RandomAccessIter result_last);
Сортировка части последовательности с копированием результата.
random_shuffle
inline void random_shuffle(_RandomAccessIter first, _RandomAccessIter last);
Располагает элементы указанного участка контейнера в произвольном порядке.
stable_sort
void stable_sort(_RandomAccessIter first, _RandomAccessIter last);
Сортировка (аналогично sort)
transform
_OutputIter transform(_InputIter first, _InputIter last, _OutputIter result, _UnaryOperation oper);
Применение функции <f> к указанным элементам контейнера. Общая функция должна принимать текущий элемент в качестве аргумента, не должна модифицировать этот элемент и должна возвращать трансформированное значение.
make_heap
make_heap(_RandomAccessIterator first, _RandomAccessIterator last);
Создание и инициализация кучи.
pop_heap
void pop_heap(_RandomAccessIterator first, _RandomAccessIterator last);
Удаление элемента с вершины кучи.
push_heap
void push_heap(_RandomAccessIterator first, _RandomAccessIterator last);
Добавление нового элемента в кучу.
sort_heap
sort_heap(_RandomAccessIterator first, _RandomAccessIterator last, _Compare comp);
Сортировка последовательности значений.
Класс bitset обеспечивает операции для создания и манипуляции наборами битов. Наборы битов имеют фиксированный размер: bitset<size> b;. Операции:
set
Установка указанного бита.
reset
Сброс указанного бита.
flip
Переключает бит.
at
Получить бит.
test
Проверка бита.
size
Возвращает число битов в наборе.
count
Возвращает число установленных битов.
any
Возвращает true если хоть один бит в наборе установлен.
none
Возвращает true если не один бит в наборе неустановлен.
==, !=
Сравнение наборов битов.
&=, |=, ^ =, >>=, <<=
Битовые операции над наборами битов.
to_string
Преобразует набор битов в строку.
to_ulong
Преобразует набор битов в unsigned long.
Объекты-функции и адаптеры-функций предназначены для того чтобы сделать STL более гибкой. Объект-функция содержит функцию, которая может быть интерпретирована с синтаксической и семантической точки зрения как функция, использующая operator(). Объекты-функции STL:
divides<T> – арифметический;
equal_to<T> – реляционный;
greater<T> – реляционный;
greater_equal<T> – реляционный;
less<T> – реляционный;
less_equal<T> – реляционный;
logical_and<T> – логический;
logical_not<T> – логический;
logical_or<T> – логический;
minus<T> – арифметический;
moduls<T> – арифметический;
negate<T> – арифметический;
not_equal_to<T> – реляционный;
plus<T> – арифметический;
multiplies<T> – арифметический;
calloc, malloc, free, realloc (ANSI) <stdlib.c, cstdlib>
void *calloc(size_t nmemb, size_t size);
void *malloc(size_t size);
void free(void *ptr);
void *realloc(void *ptr, size_t size);
Распределяют и освобождают динамическую память.
calloc – выделяет блок памяти с очисткой;
malloc – выделяет блок памяти;
free – освобождает блок памяти;
realloc – меняет размер блока памяти;
delete (C++)
delete terget;
Освобождает динамическую память, выделенную с помощью оператора new. Кроме того оператор delete активизирует деструктор объекта:
target *r= new char[256]; delete r;
target *r= new char[256]; delete []r;
memchr, memrchr (POSIX) <string.h>
void *memchr(const void *s, int c, size_t n);
void *memrchr(const void *s, int c, size_t n);
Ищет символ <c> в первых/последних <n> байтах той области памяти, на которую указывает <s>. Совпадение первого байта с <c> (представленным как беззнаковый символ) останавливает выполнение операции.
memcmp (BSD) <string.h>
int memcmp(const void *s1, const void *s2, size_t n);
Сравнивает первые <n> байтов областей памяти <s1> и <s2>. Возвращается целое число, меньшее, большее нуля или равное ему, если определено, что <s1> меньше, больше, или равно <s2>.
memcpy (BSD) <string.h>
void *memcpy(void *dest, const void *src, size_t n);
Копирует <n> байтов из области памяти <src> в область памяти <dest>.
memmove (BSD) <string.h>
void *memmove(void *dest, const void *src, size_t n);
Копирует <n> байтов из области памяти <src> в область памяти <dest>. Области памяти могут перекрываться.
memset (BSD) <string.h>
void *memset(void *s, int c, size_t n);
Заполняет первые <n> байтов области памяти <s> байтом <c>.
mlock, munlock (POSIX) <sys/mman.h>
int mlock(const void *addr, size_t len);
int munlock(const void *addr, size_t len);
Запрещает/разрешает страничный обмен памяти в области, начинающейся с адреса <addr> длиной <len> байтов.
mlockall, munlockall (POSIX) <sys/mman.h>
int mlockall(int flags);
int munlockall(void);
Запрещает/разрешает страничный обмен для всех страниц в области памяти вызывающего процесса.
mmap, munmap (POSIX) <unistd.h, sys/mman.h>
void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset);
int munmap(void *start, size_t length);
mmap – возвращает адрес отражённых <length> байтов, начиная со смещения <offset> файла (или другого объекта), определённого файловым описателем <fd>, в память, начиная с адреса <start>. munmap – удаляет все отражения из заданной области памяти.
mprotect (POSIX) <sys/mman.h>
int mprotect(const void *addr, size_t len, int prot);
Контролирует доступ <prot> к области памяти <addr> <len>.
msync (POSIX) <unistd.h, sys/mman.h>
int msync(const void *start, size_t length, int flags);
Записывает на диск изменения, внесенные в файл, отраженный в память при помощи функции mmap.
new (C++)
Type *array = new Type[256];
Используется для динамического выделения памяти (для размещения объекта в свободной памяти). Указателю array присваивается адрес выделенной памяти или присваивается NULL при её отсутствии. Оператор new автоматически активизирует конструктор объекта. Если определена функция _new_handler то она вызывается при отсутствии памяти. Способы применения оператора new:
float *r = new float; delete r;
float *r = new float(3.14); delete r;
float *r = new float[10]; delete []r;
set_new_handler (C++) <new.h | new>
void set_new_handler(void (*VFP)());
Присваивает адресу глобальной переменной _new_handler адрес функции <VFP> обработки ошибок оператора new.
isatty (SVID, AT&T, X/OPEN, BSD 4.3) <unistd.h>
int isatty(int desc);
Определяет, ссылается ли данный описатель на терминал.
tcgetattr, tcsetattr <termios.h, unistd.h>
int tcgetattr(int fd, struct termios *termios_p);
int tcsetattr(int fd, int optional_actions, struct termios *termios_p);
Получить/установить атрибуты терминала.
ttyname (POSIX.1) <unistd.h>
char *ttyname(int desc);
Возвращает название терминала.
dlopen (*NIX) <dlfcn.h>
void *dlopen (const char *filename, int flag);
Открывает и возвращает адрес динамической библиотеки <filename> с флагами <flag>.
dlerror (*NIX) <dlfcn.h>
char *dlerror()
Возвращает текстовую строку ошибки возникшей при работе с динамической библиотекой.
dlsym (*NIX) <dlfcn.h>
void *dlsym(void *handle, char *symbol);
Получить адрес функции с именем <symbol> которая ищется в библиотеке <handle>
mycomdlclose (*NIX) <dlfcn.h>
int dlclose(void *handle);
Закрытие, ранее открытой динамической библиотеки
_init() (*NIX)
Выполняется при открытии динамической библиотеки
_fini() (*NIX)
Выполняется при закрытии динамической библиотеки
getrlimit (*NIX) <sys/resource.h>
Получение различных лимитов для пользователя.
setrlimit (*NIX) <sys/resource.h>
Устанавливает различные лимиты для пользователя.
getrusage (*NIX) <sys/resource.h>
Получение различных лимитов и статистики использования ресурсов для пользователя.
ulimit (SVID) <ulimit.h>
long ulimit(int cmd, long newlimit);
Установка или определение ограничений пользователя.
openlog (BSD) <syslog.h>
void openlog(char *ident, int option, int facility);
Связывает с программой <facility>, ведущей системный журнал с опциями <option>. <indent> указывает на строку идентифицирующую программу генерирующую логи.
closelog (BSD) <syslog.h>
void closelog(void);
Закрывает описатель, используемый для записи данных в журнал.
syslog (BSD) <syslog.h>
void syslog(int priority, char *format, ...);
Создает сообщение для журнала из <format>, c приоритетом <priority>.
chmod, fchmod (POSIX) <sys/types.h, sys/stat.h>
int chmod(const char *path, mode_t mode);
int fchmod(int fildes, mode_t mode);
Изменяют режим доступа к файлу, заданному параметром <path> или описателем файла <fildes>.
chown, fchown, lchown (POSIX) <sys/types.h, unistd.h>
int chown(const char *path, uid_t owner, gid_t group);
int fchown(int fd, uid_t owner, gid_t group);
int lchown(const char *path, uid_t owner, gid_t group);
Смена владельца файла, или ссылки (lchown) на <owner> и группу <group>.
getgrnam, getgrnam_r (POSIX) <sys/types.h, pwd.h>
struct group *getgrnam(const char *name);
int getgrnam_r(const char *name, struct group *gbuf, char *buf, size_t buflen, struct group **gbufp);
Запрос записи про группу пользователей по её имени.
getgrgid, getgrgid_r (POSIX) <sys/types.h, pwd.h>
struct group *getgrgid(gid_t gid);
int getgrgid_r(gid_t gid, struct group *gbuf, char *buf, size_t buflen, struct group **gbufp);
Запрос записи про группу пользователей по её идентификатору.
getlogin, getlogin_r (POSIX) <unistd.h>
char *getlogin(void);
int getlogin_r(char *buf, size_t bufsize);
Получение имени пользователя управляющим терминалом (текущего пользователя).
getpwnam, getpwnam_r (POSIX) <sys/types.h, pwd.h>
struct passwd *getpwnam(const char *name);
int getpwnam_r(const char *name, struct passwd *pwbuf, char *buf, size_t buflen, struct passwd **pwbufp);
Запрос записи про пользователя по его имени.
getpwuid, getpwuid_r (POSIX) <sys/types.h, pwd.h>
struct passwd *getpwuid(uid_t uid);
int getpwuid_r(uid_t uid, struct passwd *pwbuf, char *buf, size_t buflen, struct passwd **pwbufp);
Запрос записи про пользователя по&n