Академия Кода – Telegram
Академия Кода
1.95K subscribers
665 photos
2 videos
2 files
42 links
Академия кода. Полезный контент по программированию. По всем вопросам @evgenycarter
Download Telegram
Вывод параметра шаблона класса

Довольно странное название функции, да? Её суть в том, что с C++17 компилятор может сам определять типы аргументов конструкторов стандартных классов. Раньше же это работало лишь для функций.

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

#cpp

Подписывайтесь на канал 👉@cod_academy
👍2
Функция strrchr()

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

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

#cpp

Подписывайтесь на канал 👉@cod_academy
👍1
Могут ли статичные функции быть виртуальными в С++?

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

Например, программа с картинки в примере 1 выдаст ошибку во время компиляции.

Кроме того, статическая функция-член класса не может иметь одновременно идентификаторы const и volatile. Код из примера 2 тоже не скомпилируется.

#cpp

Подписывайтесь на канал 👉@cod_academy
👍3
Методы start и end

Выше представлен пример, в котором производится подсчет количества раз, когда в строке ввода встречается слово "кот".

Как видим, в данном примере используются границы слов с целью удостоверения в том, что буквы "c" "a" "t" не являются частью другого слова. Также отображаются определенные полезные сведения касательно нахождения совпадения в вводимой строке.

Метод start производит возврат начального индекса в последовательности, захваченной в данной группе в ходе предыдущей операции поиска совпадений, а end производит возврат индекса к последнему совпавшему символу, плюс один.

#java

Подписывайтесь на канал 👉@cod_academy
👍1
Как удалить элемент из словаря в python по ключу?

Вы можете использовать del <Список>["<Ключ>"]

costs = {
"The Mist" : 13,
"Mile 81" : 12,
"11/22/63" : 17,
"The Green Mile" : 14,
"Fairy Tale" : 10,
"End of Watch" : 18
}

del costs["Mile 81"]

print(costs)


# Вывод : {'The Mist': 13, '11/22/63': 17, 'The Green Mile': 14, 'Fairy Tale': 10, 'End of Watch': 18}

#python

Подписывайтесь на канал 👉@cod_academy
🔥1
Алгоритм reverse_copy

Алгоритм копирует элементы из заданного диапазона, но в обратном порядке.

Принимает три параметра. Первые два параметра — это диапазон копируемых элементов, а третий параметр — начальная точка, из которой элементы копируются в обратном порядке.

#cpp

Подписывайтесь на канал 👉@cod_academy
👍4
Что такое «пул строк»?

Пул строк – это набор строк, хранящийся в Heap.

• Пул строк возможен благодаря неизменяемости строк в Java и реализации идеи интернирования строк;
• Пул строк помогает экономить память, но по этой же причине создание строки занимает больше времени;
• Когда для создания строки используются ", то сначала ищется строка в пуле с таким же значением, если находится, то просто возвращается ссылка, иначе создается новая строка в пуле, а затем возвращается ссылка на неё;
• При использовании оператора new создаётся новый объект String. Затем при помощи метода intern() эту строку можно поместить в пул или же получить из пула ссылку на другой объект String с таким же значением;
• Пул строк является примером паттерна «Приспособленец» (Flyweight).

#java

Подписывайтесь на канал 👉@cod_academy
👍3
Функция isalpha() в С++ проверяет, является ли данный символ буквой или нет.

Синтаксис:
isalpha(int ch).

Возвращаемое значение:
Функция возвращает ненулевое значение, если ch – буква и ноль, если ch не буква.

#cpp

Подписывайтесь на канал 👉@cod_academy
👍1
Регулярное выражение для электронной почты

Регулярные выражения представляют собой формальный язык поиска и редактирования подстрок в тексте. К примеру, надо провалидировать email адрес. Это будет проверка на наличие имени адреса, домена, символа @, точки и доменной зоны.

#java

Подписывайтесь на канал 👉@cod_academy
🔥1
Могут ли статические функции быть виртуальными в C++?

В C++ статическая функция-член класса не может быть виртуальной.

Кроме того, статические функции-члены класса не могут быть const и volatile.

В примере кода приведены две функции, обе из которых не дадут программе скомпилироваться.

#cpp

Подписывайтесь на канал 👉@cod_academy
Метод retainAll()

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

Подробнее про метод можно почитать здесь.

#java

Подписывайтесь на канал 👉@cod_academy
👍2
Распаковка последовательности при неизвестном числе элементов.

Для этого в Python есть оператор звездочки – расширенная операция распаковывания последовательности. Переменной со звездочкой присваивается часть списка, содержащая все неприсвоенные элементы, соответствующие этой позиции

#python

Подписывайтесь на канал 👉@cod_academy
Алгоритм stable_partition

Упорядочивает последовательность, определенную параметрами start и end, так, чтобы все элементы, для которых предикат возвращал true, предшествовали тем, для которых предикат возвращает false. Разметка стабильная. Это означает, что относительный порядок последовательности сохраняется.

#cpp

Подписывайтесь на канал 👉@cod_academy
👍1
Инкапсуляция

Инкапсуляция в Java является механизмом обёртывания данных (переменных) и кода, работающего с данными (методами), в одно целое. В инкапсуляции переменные класса будут скрыты от других классов и доступ к ним может быть получен только с помощью метода их текущего класса. По-другому это называется скрытием данных.

Для достижения инкапсуляции в Java:
☕️ Объявите переменные класса как private.
☕️ Предоставьте public к методам установки и получения (сеттеру и геттеру) для изменения и просмотра значений переменных.

Преимущества инкапсуляции:
☕️ Поля класса можно сделать только для чтения или только для записи.
☕️ Класс может иметь полный контроль над тем, что хранится в его полях.

#java

Подписывайтесь на канал 👉@cod_academy
👍2
Методов списков list

Напоминаю, списки в Python – упорядоченные последовательности элементов различных типов данных. Списки можно изменять, например, добавлять новые элементы.

1. list.append(x) – добавляет элемент, переданный в качестве аргумента, в конец списка. Этот метод является самым простым и распространённым в коде.

2. list.insert(i, x) – вставляет элемент в переданную позицию. Первый аргумент означает индекс элемента, перед которым будет добавлено новое значения.

Таким образом, list.insert(0, x) вставит элемент в начало списка, а list.insert(len(list), x) эквивалентно записи list.append(x).

3. list.extend(iterable) – расширяет список, добавляя все элементы другой коллекции.

#python

Подписывайтесь на канал 👉@cod_academy
👍1
Алгоритм merge

Объединяет две отсортированные последовательности, ограниченные диапазонами [first1,last1) и [first2,last2), в единую отсортированную последовательность, начинающуюся с позиции result.

Шаблон:
merge (initer1 beg1, initer1 end1,
initer2 beg2, initer2 end2,
outiter res).


#cpp

Подписывайтесь на канал 👉@cod_academy
1👍1
Методы list в Python

Во время собеседования на вакансию
python-разработчика очень часто звучат вопросы про списки и их методы.
Мы собрали для вас часть этих методов.

1. append() - добавляет элемент в конец списка.

2. clear() - удаляет все элементы из списка

3. copy() - делает поверхностную копию списка. Почему нужно пользоваться именно этим методом, а не присваиванием мы разбирали в другой статье.

4. count() - считает, сколько раз в списке встречается переданный аргумент.

#python

Подписывайтесь на канал 👉@cod_academy
👍2
Некоторые различия между ссылками и указателями

1. Указатель может быть объявлен void, а ссылка - никогда. Пример на картинке.

2. Переменная-указатель может иметь несколько уровней вложенности, то есть, например, бывают одиночные указатели, двойные указатели, тройные указатели. Ссылка же имеет только один единственный уровень вложенности.

3. Ссылочная переменная не может быть обновлена.

#cpp

Подписывайтесь на канал 👉@cod_academy
👍1
Сортировка методом выбора

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

Суть алгоритма заключается в последовательном переборе всех чисел и выборе наименьшего элемента, который мы возьмём и поменяем местами с крайним элементом слева (0 элементом).

Данный алгоритм превосходит пузырьковую сортировку, ведь тут количество необходимых перестановок сокращается с O(N²) до O(N): мы не гоняем один элемент через весь список, но тем не менее, количество сравнений остается O(N²).

#java

Подписывайтесь на канал 👉@cod_academy
👍2
Не знаешь на кого пойти учиться ?💥

🛑Пройди бесплатные онлайн-курсы

🛑Узнай о самых востребованных профессиях

🛑Получи уникальную возможность поступить в «Алабуга Политех» после 9 или 11 класса

ПРОЙДИ КУРС ПРЯМО СЕЙЧАС!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👌1
Как читать бинарные файлы на python?
Вы можете читать бинарные файлы с помощью режима чтения "rb"

with open('index.dat', 'rb') as binary_file:
info = binary_file.read()



Как читать большие файлы в python?
Самый простой метод чтения больших файлов - чтение построчно. При таком методе оперативная память не забивается.

with open('data.txt', 'r') as file:
for line in file:
print(line)


#python

Подписывайтесь на канал 👉@cod_academy
👍2