Но мне показалось тут ошибка в том, что нужно применять эвристику и нормальный алгоритм поиска. А тут как будто почти брутфорс. Но это уже багой не назвать. Хотя может быть это все есть под многоточием...
Из очевидного. Не хватает словечка 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
Вторая часть ответственности, это настройка вашего приложения по параметрам. Чисто клиентский код программы.
Буквально то, что хотелось почитать.
Вытесняющая многозадачность и хоумбрю VMT не вымерли (Хотя автор этого и не утверждал), буквально недавно их видел.
Хочется больше. Спасибо большое.
Вы намекаете на расширение
toVisit
?Но мне показалось тут ошибка в том, что нужно применять эвристику и нормальный алгоритм поиска. А тут как будто почти брутфорс. Но это уже багой не назвать. Хотя может быть это все есть под многоточием...
По поводу ошибки в последнем примере:
Скрытый текст
Из очевидного. Не хватает словечка static перед const я полагаю. Но не верится что это могло дать такую просадку.
Хотелось бы прочитать больше о таких же тривиальных советах к обозначенным проблемам. По типу, создать вектор под заранее известный или ожидаемый размер ячеек. Или в каких случаях стоит использовать врапперы по типу std::array.
Если такие ошибки делаются, то конечно нужно обсуждать.
Спасибо за статью.
Мне кажется это решение несколько overengineering...
Я бы не рекомендовал создавать собственные коллекции без крайней необходимости. Это требует сил, времени, создает технический долг и требует отладки с покрытием тестами.
Если нужно ограничить функционал коллекции, я рекомендую приватно унаследовать стандартную коллекцию.
Также я бы разделил ответственность вашего парсера на две. Сам парсер, на мой взгляд, должен заниматься непосредственно парсингом.
Группировать параметры по ключам и хранить значения.
Проверять корректность ввода. Ключ может быть флагом, или списком. Список может иметь допустимый набор параметров или маску. Формировать сообщение об ошибке ввода.
Автоматически формировать команду -h -help
Вторая часть ответственности, это настройка вашего приложения по параметрам. Чисто клиентский код программы.