126.12K
Категория: ПрограммированиеПрограммирование

Хранение строк в массивах

1.

Хранение строк в массивах
1

2.

Хранение строк в массивах
Современный C++ поддерживает два разных типа строк:
строки C-style (изначально унаследованные от языка Cи)
std::string (как часть Стандартной библиотеки С++)
реализованы с помощью строк C-style
2

3.

Строки C-style
Строка C-style — это простой массив символов, который использует
нуль-терминатор.
Нуль-терминатор — это специальный символ (ASCII-код которого
равен 0), используемый для обозначения конца строки. Строка Cstyle еще называется «нуль-терминированной строкой».
char mystring[] = "string";
char mystring[] = { 's', 't', 'r', 'i', 'n', 'g', '\0' };
3

4.

Многомерные массивы
4

5.

Многомерные массивы
Кроме одномерных массивов в C++ есть многомерные.
Элементы таких массивов сами в свою очередь являются
массивами, в которых также элементы могут быть
массивами.
int array[2][4]; // 2-элементный массив из 4-элементных массивов
[0][0] [0][1] [0][2] [0][3] // строка №0
[1][0] [1][1] [1][2] [1][3] // строка №1
5

6.

Инициализация многомерных массивов
int array[2][5] =
{
{ 1, 2, 3, 4, 5 }, // строка №0
{ 6, 7, 8, 9, 10 } // строка №1
};
int array[][5] =
{
{ 1, 2, 3, 4, 5 },
{ 6, 7, 8, 9, 10 }
};
int array[3][5] =
{
{ 2, 4 }, // строка №0 = 2, 4, 0, 0, 0
{ 1, 3, 7 }, // строка №1 = 1, 3, 7, 0, 0
{ 8, 9, 11, 12 } // строка №2 = 8, 9, 11, 12, 0
};
int array[3][5] = { 0 };
6

7.

Случайные значения
7

8.

Генератор псевдослучайных чисел
Компьютеры неспособны генерировать случайные числа. Вместо этого они могут
имитировать случайность, что достигается с помощью генераторов псевдослучайных
чисел.
Генератор псевдослучайных чисел (сокр. «ГПСЧ») — это программа, которая принимает
стартовое/начальное значение и выполняет с ним определенные математические
операции, чтобы конвертировать его в другое число, которое совсем не связано со
стартовым. Затем программа использует новое сгенерированное значение и выполняет с
ним те же математические операции, что и с начальным числом, чтобы конвертировать
его в еще одно новое число — третье, которое не связано ни с первым, ни со вторым.
Применяя этот алгоритм к последнему сгенерированному значению, программа может
генерировать целый ряд новых чисел, которые будут казаться случайными (при условии,
что алгоритм будет достаточно сложным)
8

9.

Алгоритмы ГПСЧ в C++ 11
linear_congruential_engine
• Линейный конгруэнтный метод
mersenne_twister_engine
• Вихрь Мерсе́нна
substract_with_carry_engine
• Метод Фибоначчи с запаздываниями
9

10.

Предопределённые ГПСЧ
Для использования ГПСЧ необходимо подключить заголовочный файл <random>
linear_congruential_engine
mersenne_twister_engine
substract_with_carry_engine
minstd_rand0
mt19937
ranlux24_base
minstd_rand
mt19937_64
ranlux24
knuth_b
default_random_engine
Реализация
определяется
производителем
компилятора
ranlux48_base
ranlux48
10

11.

Недетерминированный источник
случайных чисел
random_device
• Выдаёт случайную последовательность,
полученную не с помощью определенного
математического алгоритма, а при чтении
системного файла. Содержимое файла является
случайным, потому что содержимое файла
является энтропией компьютерной системы
11

12.

Равномерные распределения случайных чисел
uniform_int_distribution
uniform_real_distribution
• Равномерное
целочисленное
распределение в
интервале [a; b]
• Равномерное
распределение чисел с
плавающей точкой в
интервале [a; b)
12

13.

Другие виды распределения случайных чисел
Распределение
Бернулли
bernoulli_distribution – распределение Бернулли
binomial_distribution - биномиальное распределение
geometry_distribution - геометрическое распределение
negative_negative_biomial_distribution - отрицательное биномиальное распределение
Распределение
Пуассона
poisson_distribution - распределение Пуассона
exponential_distribution - экспоненциальное распределение
gamma_distribution - гамма-распределение
weibull_distribution - Распределение Вейбулла
extreme_value_distribution - распределение экстремальных значений
13

14.

Другие виды распределения случайных чисел
Нормальное
распределение
normal_distribution - нормальное распределение
lognormal_distribution - логнормальное распределение
chi_squared_distribution - распределение хи-квадрат
cauchy_distribution - распределение Коши
fisher_f_distribution - распределение Фишера
student_t_distribution - распределение Стью́ дента
Выборочное
распределение
discrete_distribution - дискретное распределение
piecewise_constant_distribution - кусочно-постоянное распределение
piecewise_linear_distribution - кусочно-линейное распределение
14
English     Русский Правила