Как стать автором
Обновить
4
0
Владимир Елисеев @TheDestr

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

Отправить сообщение

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

Вытесняющая многозадачность и хоумбрю 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

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

Информация

В рейтинге
Не участвует
Откуда
Россия
Зарегистрирован
Активность

Специализация

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