• Что можете сказать про данный код?

    @dima20155
    you don't choose c++. It chooses you
    1. Если вам удобно такое, то здорово, применяйте, но как минимум в input я большого смысла не вижу, ибо это заменятся одной строкой и будет выглядеть более явно. Я бы предложил добавить в реализацию данных функций шаблоны, иначе для каждого типа данных, хранимых контейнером придется писать новую функцию. Можно даже тип контейнера в шаблон завернуть. Для обучения практика вам будет полезная.

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

    3. Имя лист для вектора неудачное, лучше array или strArray в вашем конкретном случае.

    4. Функция NUM бесполезна, так как является обёрткой над понятной шаблонной функцией std::to_string. В вашем случае не ясно что делает функция при прочтении ее имени

    5. Вы уверены, что код типа output({ input() }); вам необходим? Вы здесь выполняете слишком много лишних операций. Хотя по факту это должна быть просто одна строка std::cout
    Ответ написан
    2 комментария
  • На каком игровом движке создают подобного рода игры?

    @dima20155
    you don't choose c++. It chooses you
    Полагаю, что самый первый скил, который вам необходим - это умение гуглить. Мобильные игры довольно часто создаются на unity, но есть и другие движки поддерживающие такую функциональность тот же unreal (погуглите возможности движков, погуглите распределение рынка мобильных игр). На счёт литературы: многое терабайты курсов, книг на любом языке платно и бесплатно есть в интернете, все свободно находится в поисковике, вот прям без малейших проблем.

    P.s. я не хочу кого-то задеть или унизить, в интернете уже крайне много информации от крутых специалистов, лучше которых я рекомендации дать я не смогу, а копипастить их сюда для вашего удобства бессмысленно.
    Ответ написан
    Комментировать
  • CMake в Visual Studio отказывается билдить проект?

    @dima20155
    you don't choose c++. It chooses you
    Тык у вас же написано в предпоследней строчке:
    Не удается найти ресурсный файл студии.
    Уберите зависимость от него в файле проекта или восстановите этот файл.
    Ответ написан
  • Как сделать перегрузку "=="?

    @dima20155
    you don't choose c++. It chooses you
    Замените строку
    if (planets[i].name == name_d)
    на
    if (planets[i] == name_d)
    Если хотите, чтобы вызывался operator==
    Но у вас там кроме этого ещё очень много странностей.
    Зачем сравниваете строки напрямую? Есть strcmp
    Зачем вообще работаете с сырыми строками, если даже не следите за очисткой памяти?
    Лучше замените все на std::string.
    Ответ написан
    Комментировать
  • Как быстро округлить timestamp до секунд, минут, часов, дней и т.д.?

    @dima20155
    you don't choose c++. It chooses you
    Можете использовать duration_cast до дней.В доке как раз написано, что выполняется округление.Затем обратно преобразовать в time_point, если это необходимо.
    Ответ написан
    6 комментариев
  • В конце сборки telegram-bot-api под Ubuntu 20.04 выскочило предупреждение (см. описание), но сервер поднимается - надо ли пересобирать?

    @dima20155
    you don't choose c++. It chooses you
    Насколько я понимаю тут речь о том, что не нужно возвращать std::move(error), поскольку это локальный объект и компилятор сам использует либо RVO (return value optimization), а в случае невозможности RVO будет применено std::move неявно, поэтому следует убрать std::move, чтобы компилятор сам все сделал. Данная ошибка влияет лишь немного на производительность.
    Ответ написан
    4 комментария
  • Можно ли при вызове функции указать в него тип данных?

    @dima20155
    you don't choose c++. It chooses you
    Полагаю, что вам удобно будет использовать здесь шаблоны, если я правильно понял вопрос.
    Например:
    template <typename T>
    auto search (std::string str) {
        // T - data type
        T res;
        // do something
        return res;
    }
    
    int main () {
        auto a = search<int>("a");
        auto b = search<std::string>("a");
    }
    Ответ написан
    5 комментариев
  • Почему gcc: command not found в этом случае?

    @dima20155
    you don't choose c++. It chooses you
    Либо добавить директорию в path, либо alias, либо просто явно указывать путь до бинарника, все способы ок.
    Ответ написан
    1 комментарий
  • На сколько сложно утроиться джуном на позицию C++ dev?

    @dima20155
    you don't choose c++. It chooses you
    Совет - иметь навыки мидла, претендовать на позицию джуна тогда все получится))
    В целом, не слишком сложно, все зависит от навыков, о них ниже:

    А если серьезно, то требования к джунам довольно высокие сейчас, как мне кажется. Так что мужайтесь, оставляйте отклики, если не взяли - просите тех. фидбек по результатам собеседования, изучайте, закрывайте пробелы в знаниях и будет вам успех.

    По навыкам - мне нравится этот road map, ну и самый главное желание и стремление обучаться.
    Ответ написан
    2 комментария
  • Как сделать какую-нибудь многозадачность на ардуино?

    @dima20155
    you don't choose c++. It chooses you
    В Ардуино всего одно физическое ядро, поэтому вычислять в параллель у вас не выйдет. Единственное решение - переложить часть задач на переферию. Например, если значения из датчика отправляются на АЦП, то можно настроить прерывания и забирать данные когда удобно. Классический delay тоже лучше реализовать через таймер, ибо стандартный delay просто заставляет процессор ждать, вместо вычислений/других полезных действий
    Ответ написан
    4 комментария
  • Какие навыки требуются Junior программисту микроконтроллеров?

    @dima20155
    you don't choose c++. It chooses you
    1. Прежде всего, нужно знание схемотехники, но в вашем случае этот этап можно вычеркнуть.
    2. Естественно, знание основ С и С++ (синтаксиса, базовых конструкций). Советую вам использовать в своих проектах С++, поскольку зачастую вы сможете писать в стиле С без каких-либо проблем, а при необходимости воспользоваться фичами/библиотеками для С++.
    3. Навыки hardware и software отладки. Здесь просто нужна практика с любимой IDE.
    4. Понимание указателей, типов памяти (статическая, динамическая, автоматическая, регистровая). Как память выделяяется и прочее.
    5. Знание базовых структур данных. Это немного скользкий пункт, поскольку С++ предоставляет хорошую (хотя и весьма минималистичную) стандартную библиотеку STL, в которой есть большинство из необходимых структур данных, но они используют довольно много дополнительной аллокации памяти, поэтому если пишете под что-то 8битное, то имейте это ввиду.
    6. Знание git на базовом уровне сейчас важно для джуна любой IT специализации.
    7. Неплохо бы иметь базовое представление о том как устроен микроконтроллер и его архитектура.
    8. Неплохо бы понимать RTOS (FreeRTOS - классика жанра), а главное зачем он нужен, а когда он не нужен или вреден.
    9. Лично мне всегда в работе пригождается python, но это всегда сторонние задачи/автоматизация.

    P.S. Нашел ещё вот такой RoadMap.
    P.S.S. Получилось довольно объемно. Но пункты 2-5 по сути можно объединить в один. Все это можно изучить написав парочку проектов для классической STM32 + HAL.
    P.S.S.S. Сам начинал как hardware разработчик. Путь embedded разработчика начального уровня не был сложным для меня и занял не очень много времени.
    Ответ написан
    Комментировать
  • Как расширить размер динамического массива типа string в с++?

    @dima20155
    you don't choose c++. It chooses you
    Вы можете повлиять на выделение памяти только посредством аллокаторов или переопределением new/delete (в специфичных случаях). Поэтому предлагаю вам посмотреть на std::basic_string и соответствующие шаблонные параметры
    Ответ написан
  • Не могу добиться вывода стека в консоль?

    @dima20155
    you don't choose c++. It chooses you
    Основная ошибка:
    std::cout << p->max[i] << "\n";  // instead of:
    // printf("%f\n", p->max[i]);


    Вот ещё пара недочетов:
    Вообще правильно
    int main() //instead of void main()

    Также странно, что 0, 1, 2 пункты меню на английском, и только 3 на русском.

    Функция isEmpty, create, del работают только со стеком, в то время как add работает ещё и с вводом-выводом, что не совсем ожидаемо, лучше вынести работу с IO из функции add, чтобы не пришлось писать ещё один add, когда захочеся пополнять стек из файла или брать данные откуда-то из сети/сокетов и т.д.. Разве что для демонстрационной программы это ок.
    Ответ написан
    Комментировать
  • Как удалить слово из строки начинающие на согласные?

    @dima20155
    you don't choose c++. It chooses you
    Создайте массив со всеми согласными. Двигайтесь по строке: когда встретили пробельный символ проверьте следующий символ. Если символ - согласная буква - слово пропускаем, если гласная, двигаясь до следующего пробельного символа сохраняем буквы в результирующую строку
    Ответ написан
  • Как узнать размер незаполненного массива в c++?

    @dima20155
    you don't choose c++. It chooses you
    Заполните изначально массив INT_MAX и затем заполните его на столько элементов, сколько нужно. Затем ищите первый элемент равный INT_MAX. Индекс этого элемента и будет длиной массива см. Как работает strlen.

    Второй и наилучший вариант - использовать std::array или написать его аналог
    Ответ написан
    5 комментариев
  • Как быстро получить случайное слово из файла на 12 ГиБ?

    @dima20155
    you don't choose c++. It chooses you
    Вариант с потолка: генерируйте случайную позиции в файле (от нуля до размера файла в байтах). Читаете все окружающие символы пока не найдете два символа новой строки ('\n') до и после исходной случайной позиции. Между этими символами новой строки и будет ваше случайное слово.

    Рандом, конечно же, не совсем честный и сильно зависит от различия в длинах строк в файле.
    Ответ написан
    22 комментария
  • Как при создании объекта создавать запись в базе?

    @dima20155
    you don't choose c++. It chooses you
    Как на счёт паттернов фабрика (fabric method) или абстрактная фабрика (abstract fabric)?
    https://refactoring.guru/design-patterns/factory-method
    https://refactoring.guru/design-patterns/abstract-...
    Ответ написан
    Комментировать
  • Какой тип данных использовать в кликере?

    @dima20155
    you don't choose c++. It chooses you
    Создайте свой класс для этого. Классический BigInt, который можно реализовать на основе массива. Или можно хранить только значимую часть денег и префикс. Зачем вам знать сколько у вас копеек, если у вас из квинтилион рублей.
    Ответ написан
    Комментировать
  • Почему доступ к элементам vector-а O(1)?

    @dima20155
    you don't choose c++. It chooses you
    То, что вы называете вектором - это связанный список, по своей сути. Вот статья навики. Слово вектор, насколько, я знаю, не используется в контексте классических структур банных. Если же под вектором имеется в виду std::vector, то данный вектор создан на основе динамического массива.
    Ответ написан