• Есть ли словари (Как в Python) в C++?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Да.
    Вот тут можно ознакомится с типами контейнеров в C++: https://en.cppreference.com/w/cpp/container
    Там и примеры использования есть.
    Ответ написан
    Комментировать
  • Не сожгу ли процессор i9 10900?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Это довольно много для водяного охлаждения, даже для стресс-тестов. Попробуйте:
    - заменить термопасту (на просто хорошую)
    - поставить водянку с 2, а лучше с 3 куллерами

    Можно ещё поэкспериментировать с воздушными потоками. Например 2-3 куллера на вдув в корпус, 1 на выдув и кулеры от водянки тоже на выдув.

    Когда станет около 70 в стресс тестах, будет неплохо.
    Ответ написан
  • Достаточно ли будет чтения cppreference для освоения STL?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Не слишком понятно, что имеется ввиду под "освоением STL". Это всего лишь библиотека языка. Вам надо знать, грубо говоря, что в ней есть в плане возможностей. А уж потом, по мере необходимости, идти и читать документацию.

    Проще говоря, допустим случай, когда вам надо отсортировать массив. Зная, что в STL есть и класс для массива и методы сортировки, вы идёте и читаете документацию, а потом используете. cppreference -- отличный ресурс с примерами.

    Я помню читал одну относительно тоненькую книгу по STL когда-то. Вроде бы неплохая была. Сейчас уже наверно устарела: "STL tutorial and reference guide" by David R. Musser .
    Ответ написан
    Комментировать
  • Нужно ли подтверждать опыт работы программистом для собеседовании в иностранные компании?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Чаще всего нужен диплом по подходящей специальности. Его теоретически могут заменить 5+ лет опыта. Но не для собеседования, а для получения визы. Если специалист хороший, и у компании есть деньги, то могут и юристов нанять, чтобы помочь его перевезти.
    Это пожалуй самое существенное различие и препятствие: вы не имеет права на работу с стране компании-нанимателя. Если бы оно у вас было, то точно так же смотрели бы только на знания, умения и навыки.

    Как ни странно, но возможно вам будет проще переехать не в компании Европы и США, а в Россию или Беларусь. Дело конечно сомнительное, учитывая ситуацию в мире (да и до неё было сомнительным). Можно ещё условную Грузию рассмотреть. Просто посмотрите на соответствующих сайтах этих стран.

    Можно ещё попробовать работать удалённо из своей страны. Но это требует хорошего английского и релевантного опыта в целом.
    Ответ написан
    Комментировать
  • Есть ли возможность 3D художнику получить рабочую визу Германии?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Начните проходить собеседования в компании в условном Берлине. Успешно пройдёте, сотрудники отдела кадров вам всё расскажут. В любом случае, можете погуглить этот перечень, насколько я помню, слово "айтишной" очень широко трактуется в Германии. По крайней мере, дипломы условных химиков вполне себе подходят для получения визы и даже Blue Card разработчиком.

    Можете ещё на профильных форумах/каналах поспрашивать у тех, кто уже переехал. Русскоязычное коммьюнити в Германии велико.

    Возможность получения Blue Card для вас закрыта из-за отсутствия образования (или же 5+ лет опыта работы, что довольно зыбко), но получить национальную рабочую визу можно, я думаю.
    Ответ написан
    Комментировать
  • Почему вызов метода класса гораздо медленее вызова обычной функции и как это исправить?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Дело тут ещё и в методах измерения. По-хорошему, нужно взять любой тестовый фреймворк, будь-то google benchmark или там catch2, который позволяет осуществлять замеры производительности. В нём создать два бенчмарка и смотреть на разницу. Если она будет какая-то существенная, то брать профилировщик, правильно компилировать проект и смотреть что занимает больше всего времени выполнения.
    А уже после этого можно играть с флагами и смотреть какой код генерируется в обоих случаях. Можно и до в этом конкретном случае.

    И вот тогда вы сможете ответить на вопрос почему на вашем компьютере что-то работает медленнее или быстрее. А потому можно ещё и обнаружить, что для разных архитектур и/или компиляторов будет генерироваться разный код, будут применяться разные оптимизации и производительность может отличаться.

    PS
    Но у вас скорее всего и правда оптимизатор код выкидывает в первом случае всё считается во время компиляции, а функция встраивается. Во втором случае это сложнее.
    Вот тут ещё можете посмотреть какой код генерируется и с флагами поиграться: https://www.godbolt.org/
    Ответ написан
    Комментировать
  • Как оформить список C++?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Тут есть несколько фундаментальных ошибок.

    С++ -- это не C.
    Не стоить пользоваться массивами в стиле char nameF[10]. Для этого есть std::string. Для других типов можно использоватьstd::vector или std::array.
    То же самое и касательно printf/scanf. В C++ боле каноничным будет использование std::cout, std::cin.

    Не нужно записывать строковое представление в массив.
    Храните массив структур. При необходимости, распечатывайте в цикле.

    Пользуйтесь манипуляторами.
    В C++ можно подключить заголовочный файл iomanip. В нём есть манипулятор setw. Его использование поможет вам сделать таблицу с ровными краями. Есть ещё, например setprecision, если необходимо регулировать точность выводимых значений.

    PS
    Документацию по всему описанному выше можно найти на cppreference.com
    Ответ написан
    Комментировать
  • Как пофиксить ошибку линковщика?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Вам надо сделать следующее:
    - Создать проект в вашей IDE (VisualStudio), на основе CMake (предпочтительно) или MSBuild
    - Посмотреть как реализована интеграция с пакетным менеджером vcpkg
    - Добавить в список зависимостей vcpkg libcurl

    После этих простых шагов (по каждому из которых много документации в открытом доступе), всё у вас заработает. Точно так же можно получать другие полезные зависимости с помощью vcpkg.
    Это и будет современным и переносимым подходом к разработке и управлению зависимостями.
    Ответ написан
    Комментировать
  • Как перегрузить оператор так, чтобы принимать std::endl в своём потоке вывода?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Вот тут есть примеры сигнатуры функции: https://en.cppreference.com/w/cpp/io/basic_ostream...
    basic_ostream& operator<<(
        std::basic_ostream<CharT,Traits>& (*func)(std::basic_ostream<CharT,Traits>&) );
    Ответ написан
    Комментировать
  • Почему используется потенциально неинициализированная локальная переменная-указатель "matrix"?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    У вас же C++, поэтому можно и нужно сильно упростить код.
    #include <vector>
    
    // ...
    
    std::vector<std::vector<float>> matrix(n, std::vector<float>(m));
    Ответ написан
    Комментировать
  • Как выводить строчку, на которой было выброшено исключение?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Есть замечательная функциональность: https://en.cppreference.com/w/cpp/utility/source_l...
    Доступна начиная с C++20. Буду образовывать заодно и местных экспертов :)
    Ну или макросы.
    Ответ написан
    Комментировать
  • Какая разница в скорости между vector.resize и vector.reserve (C++)?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Разницы нет. Так как и в первом и во втором случае самая ресурсоемкая операция выполняется один раз. Во втором случае, проверку разумеется никакой оптимизатор не выбросит, но она 1) работает за константу и 2) практически не влияет за счёт branch prediction.
    Есть случаи, когда невозможно (неудобно) использовать resize, есть, когда reserve. Для 99% случаев подходы идентичны.
    Ответ написан
    Комментировать
  • Как подключить qt к проекту с помощью cmake?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Если вы используете класс QImage, то в официальной документации написано, какие строки надо добавить в CMakeLists.txt (https://doc.qt.io/qt-6/qimage.html):
    find_package(Qt6 COMPONENTS Gui REQUIRED)
    target_link_libraries(mytarget PRIVATE Qt6::Gui)
    Ответ написан
  • Насколько реально устоиться на удалёнку C# разработчиком за рубеж с опытом около года?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Примерно на одну десятую попугая из 10. Судя по описанию навыков, вам проще устроиться в аутсорсинговую компанию, скорее всего на стажировку или на одну из начальных позиций.

    Если рассматривать работу не на компанию-посредника, то вам необходимо иметь навыки старшего разработчика или очень хорошие навыки среднего разработчика и уровень английского около upper-intermediate (письменный и устный). Формальный стаж работы роли не играет на самом-то деле, важнее задачи какого уровня вы можете решать. Три года, как вы указали -- это примерно нижняя планка. Обычным людям требуется лет 5-7 коммерческого опыта в среднем, чтобы приобрести все эти навыки.
    Ответ написан
    Комментировать
  • Почему крешится используя update и repaint?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Я не слишком понимаю, какую конкретно проблему вы пытаетесь решить. Если напишите, то будет легче помочь.
    На всякий случай, уточню, что то что вы описали -- это следствия потенциально неправильного решения некоторой реальной проблемы. Например, для работы с анимацией уже есть готовые решения.

    Касательно кода, вам как минимум надо вызывать event->accept() и к слотам func_1/2 присоединяться с аргументом Qt::QueuedConnection (а не вызывать их напрямую вроде obj->foo()). Тогда и мьютекс не понадобится.
    Касательно объекта типа QPainter, его лучше создавать в обработчике события, как и рекомендуется в официальной документации.

    На вопрос же "почему оно случайно падает?" ответить просто невозможно, не имея как минимум полного кода приложения, параметров компиляции, запуска и знаний об операционной системе. После этого надо собрать Qt в отладочном режиме, собрать с ним приложение и смотреть потоки в отладчике и их состояние. Но я не уверен, что это всё необходимо, принимая во внимание первый абзац. Строго говоря, проблема может быть совсем не в том участке кода, который вы привели, да и код может быть совсем другой надо написать. Очень мало данных.
    Ответ написан
  • Почему линковщик жалуется на undefined reference?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    У вас в проекте есть файл CMakeLists.txt. Туда и должны быть добавлены все зависимости. Для сборки проекта надо использовать этот генератор систем сборки.
    Руками вызывать компилятор и указывать параметры не нужно. Команда вроде cmake --build . --parallel делает всю работу (перед этим надо просто cmake вызвать c нужными параметрами).
    Ответ написан
    2 комментария
  • Какие внешние зависимости и как распологать в проекте?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Рекомендую использовать vcpkg (можно и conan) или же docker-контейнер с нужными зависимостями для сборки. Сам генератор систем сборки CMake.

    Добавлять для этого подмодули или же использовать системный менеджер зависимостей можно конечно, но на дистанции это не самое удобное и переносимое решение. Так что я не рекомендую.

    При необходимости могу подробнее расписать достоинства и недостатки.
    Ответ написан
    Комментировать
  • Гайд по поступлению в Беларуси?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Выучите английский язык и готовьтесь к поступлению в вуз в Латвии, Литве или Польше. Подойдёт любой технический вуз (разумеется и на рейтинги стоит посмотреть). А три года как раз хватит на хорошую подготовку.
    Возможно придётся выучить и какой-то другой язык и подтянуть какие-то предметы, тут уже по странам Европы надо смотреть и по вузам, какие и где требования. Например, я читал что в Чехии есть что-то вроде годичных программ изучения языка и подготовки к вузу. Тоже хороший вариант, но деталей, увы, я не знаю.

    Разумеется, если возможность уехать всё ещё есть. Я не слишком слежу за новостями в последнее время.
    Ответ написан
    Комментировать
  • Какова нормальная температура для Intel Core i7 3770K?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Нормальная температура, с учётом кулера. Если будет 60+ в простое и 80+ под нагрузкой, то стоит начинать волноваться.

    Если есть желание снизить температуру, то поставьте водянку или хороший кулер от noctua. Возможно стоит и корпус заменить для лучшего охлаждения.
    Ответ написан
  • Что значит ссылка без типа?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Компилируйте всегда с флагами -Wall -Wextra -pedantic и будет вам счастье :)
    Ответ написан
    Комментировать