Search
Write a publication
Pull to refresh
4
0
Владимир Елисеев @TheDestr

Программист видеоигр

Send message

Буквально то, что хотелось почитать.

Вытесняющая многозадачность и хоумбрю VMT не вымерли (Хотя автор этого и не утверждал), буквально недавно их видел.

Хочется больше. Спасибо большое.

Вы намекаете на расширение toVisit ?

Но мне показалось тут ошибка в том, что нужно применять эвристику и нормальный алгоритм поиска. А тут как будто почти брутфорс. Но это уже багой не назвать. Хотя может быть это все есть под многоточием...

По поводу ошибки в последнем примере:

Скрытый текст

Из очевидного. Не хватает словечка static перед const я полагаю. Но не верится что это могло дать такую просадку.

Хотелось бы прочитать больше о таких же тривиальных советах к обозначенным проблемам. По типу, создать вектор под заранее известный или ожидаемый размер ячеек. Или в каких случаях стоит использовать врапперы по типу std::array.

Если такие ошибки делаются, то конечно нужно обсуждать.

Спасибо за статью.

Мне кажется это решение несколько overengineering...

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

class Arguments : private std::span<const char*>
{
    using PARENT = std::span<const char*>;

   public:
    inline Arguments(int n, const char** args) : PARENT(args, n) {}

    inline auto begin() { return PARENT::begin(); }

    inline auto end() { return PARENT::end(); }

    inline auto size() { return PARENT::size(); }
};

Также я бы разделил ответственность вашего парсера на две. Сам парсер, на мой взгляд, должен заниматься непосредственно парсингом.

  • Группировать параметры по ключам и хранить значения.

  • Проверять корректность ввода. Ключ может быть флагом, или списком. Список может иметь допустимый набор параметров или маску. Формировать сообщение об ошибке ввода.

  • Автоматически формировать команду -h -help

Вторая часть ответственности, это настройка вашего приложения по параметрам. Чисто клиентский код программы.

Information

Rating
Does not participate
Location
Россия
Registered
Activity

Specialization

Game Developer, Game Designer
Middle
From 190,000 ₽
C++
C#
OpenGL
Java
JavaScript
Cmake
Multiple thread
Git
Python
Lua