Unreal Engine C++ Course
PatreonBoostyTelegramYoutube
  • О курсе
  • Ссылки
    • Git
    • Visual Studio
    • Unreal Engine
  • Глоссарий
    • Общие понятия
    • Код / C++
      • Const correctness
      • Использование auto
    • Код / Best practices
    • Анимации
    • UI
    • VFX
    • AI
  • Unreal Editor Hotkeys
  • Visual Studio Hotkeys
  • Console commands
  • Проблемы и решения
    • IntelliSense тормозит
    • Проект не компилируется
    • Не вижу репозиторий ShootThemUp
    • Класс не отображается в Solution Explorer
    • Не работает Apply Damage
    • Где взять текстуры интерфейса
    • Нет контекстного меню UE при клике правой кнопкой мыши на файле .uproject
    • Ошибка Unable to start program
  • Вопросы и ответы
    • Зачем вступать в организацию EpicGames на Github
    • Можно ли проходить курс на UE5
    • Как перегенерировать файлы проекта
    • Насколько сильно влияет кол-во инклюдов на работу кода
    • На сколько большие могут быть структуры и таблицы
    • Медленный ли Cast
    • Что такое интерфейсы
    • Как работает код с переопределением GetMaxSpeed
    • Hit Reaction Animation
  • Дополнения к урокам
    • Лекция 065
      • Additive animation при приземлении
      • Блокировка стрельбы при беге
    • Лекция 079
      • Пикап видим после начисления патронов
      • Пикап не подбирается, если боекомплект расходуется в точке респауна пикапа
    • Лекция 089
      • NiagaraSystem не аттачится к дулу
    • Лекция 148
    • Лекция 155
  • Как задавать вопрос
  • Что почитать
  • UE5
  • Automation
    • Форматирование кода
  • VPN
  • 👨‍🎓мои курсы
    • 🧪Автоматизация и тестирование в Unreal Engine
    • 🐍Snake game
  • 🔗lifeexe сообщество
    • Поддержать проект
    • Ресурсы
    • Проекты участников сообщества
    • Code review участников сообщества
Powered by GitBook
On this page

Was this helpful?

  1. Глоссарий

Код / C++

PreviousОбщие понятияNextConst correctness

Last updated 3 years ago

Was this helpful?

Сигнатура функции — имя функции и список ее параметров

Итератор — это объект, который способен перебирать элементы контейнерного класса без необходимости пользователю знать реализацию определенного контейнерного класса

#include <iostream>
#include <algorithm>
#include <vector>

int main()
{
    std::vector<int> Numbers{ 0, 1, 2, 3, 4, 5, 6, 7, 8 };
    for (std::vector<int>::iterator it = Numbers.begin(); it != Numbers.end(); ++it)
    {
        std::cout << *it << ' ';
    }
    // 0 1 2 3 4 5 6 7 8
}

Forward declaration (предварительное объявление) — является таким типом объявления, при котором компилятор имеет возможность разрешить ссылки из различных частей программы. Предварительное объявление позволяет программисту ссылаться на объекты, о которых компилятор ещё не знает, но которые будут определены в процессе компиляции позже. Почитать подробнее: ,

Функиональный объект (функтор) — конструкция, позволяющая использовать объект как функцию. В C++ функтор для объявления функтора достаточно переопределить operator()

#include <iostream>
 
class Clamp
{
public:
    int operator() (int Value, int Min, int Max) const
    {
        return Value < Min ? Min : Value < Max ? Value : Max;
    }
};
 
int main()
{
    Clamp clamp;
    std::cout<< clamp(40, 0, 30) << std::endl;     // 30
    std::cout<< clamp(-1, 0, 30) << std::endl;     // 0
    std::cout<< clamp(15, 0, 30) << std::endl;     // 15
}

Предикат — подмножество функторов, в которых тип возвращаемого значения bool

#include <iostream>
#include <algorithm>
#include <vector>

class EvenNumber
{
public:
    bool operator()(int Value) const
    {
        return Value % 2 == 0;
    }
};

int main()
{
    const std::vector<int> Numbers{ 0, 1, 2, 3, 4, 5, 6, 7, 8 };
    const int Count = std::count_if(Numbers.begin(), Numbers.end(), EvenNumber());
    std::cout << Count << " even numbers ";
    std::cout << "in vector of " << Numbers.size() << " elements" << std::endl;
    // 5 even numbers in vector of 9 elements
}

Анонимная функция lambda — это краткая форма записи анонимных функторов

#include <iostream>
#include <algorithm>
#include <vector>

int main()
{
    const std::vector<int> Numbers{ 0, 1, 2, 3, 4, 5, 6, 7, 8 };
    const int Count = std::count_if(Numbers.begin(), Numbers.end(), [](int Value) { return Value % 2 == 0; });
    std::cout << Count << " even numbers ";
    std::cout << "in vector of " << Numbers.size() << " elements" << std::endl;
    // 5 even numbers in vector of 9 elements
}
#include <iostream>
#include <algorithm>
#include <vector>

int main()
{
    const std::vector<int> Numbers{ 0, 1, 2, 3, 4, 5, 6, 7, 8 };
    const auto lambdaFunc = [](int Value) { return Value % 2 == 0; };
    const int Count = std::count_if(Numbers.begin(), Numbers.end(), lambdaFunc);
    std::cout << Count << " even numbers ";
    std::cout << "in vector of " << Numbers.size() << " elements" << std::endl;
    // 5 even numbers in vector of 9 elements
}
Ускорение сборки C и C++ проектов
Pimp My Pimpl