Задать вопрос
  • Структура данных типа очереди, позволяющая быстро определить позицию элемента. Есть?

    Сергей , а что означает: "по элементу определить номер его позиции"?
    Чтобы найти нужный инструмент, неплохо бы сперва представить себе его во всех красотах.

    Какая цель перемещения элементов? А для чего нужно знание позиции? Всегда ли удаление происходит только из головы? Всегда ли добавление происходит в хвост?
    Нужно ли выбранный элемент перемещать в сторону хвоста? Или перемещать нужно только в сторону головы?
    Элементы в контейнере уникальны или имеются дубликаты? По ссылке ли хранятся элементы или по значению? Две разные инстанции элемента с одинаковым контентом будут разными или одинаковыми?

    Пока на примете только бинарная куча и интрузивный лист. Но они оба могут не подойти тебе в зависимости от ответов на вопросы выше.
  • Матрицы и выполнение собственных операций с матрицами в OpenGL?

    @MarkusD Куратор тега C++
    Toonas , дерзай. :)
    Линейная алгебра и Аналитическая геометрия - безумно интересные науки! Тебе понравятся.
    А потом, как закончишь хороший универ, буду ждать тебя в рядах игровых программистов. :)
  • В чем суть данной конструкции?

    @MarkusD Куратор тега C++
    Vitaly , это называется:
    // Happy debugging, suckers!
    #define true false
  • Матрицы и выполнение собственных операций с матрицами в OpenGL?

    @MarkusD Куратор тега C++
    Toonas , как непривычно в наше время встретить человека незнакомого с линейной алгеброй. :)
    Да, для понимания матриц и аффинных преобразований тебе стоит взять учебник по "линейке", да потолще, и впитать его в себя.

    Это не ответ конкретно на твой вопрос, это моя рекомендация в общем. Разбирая линейку, думай о 3D, тогда тебе понравится.
  • Как реализовать кроссплатформенное ПО с библиотеками для Windows/Linux?

    @MarkusD Куратор тега C++
    WayMax , у меня "platform" является только одной из подсистем и планомерно подключается, на ряду с остальным подсистемами, в мастер-заголовке библиотеки. Платформенный код является сервисным для всего остального кода.

    Для тебя, из приведенного тобой примера, я бы сформировал такие включения.
    /// @file	platform/platform.h
    // ...
    
    // lookup include directories.
    #if( BUILD_PLATFORM_WINDOWS_DESKTOP )
    	#include <platform.windows/platform.windows.h>
    #elif( BUILD_PLATFORM_ANDROID )
    	#include <platform.windows/platform.android.h>
    #else
    	#error Unknown platform.
    #endif
    
    // lookup local 'platform' directory.
    #include "File.h"
    // ...
    
    /// @file	platform.windows/platform.windows.h
    // ...
    
    // lookup local 'platform.windows' directory.
    #include "PlatformSpecificFile.h"
    // ...
    
    /// @file	somewhere/in/your/api/file.h
    // ...
    #include <platform/platform/h>
    
    // ...
    File my_file{ file_name, OpeningMode::CreateAlways, AccessOptions::Read, SharingOptions::Read };
    // ...


    Иными словами, не API в платформу, а платформа включается в API, т.к. это API зависит от платформозависимого кода, а не наоборот.

    Я не работаю в Qt, я предпочитаю MSVS. В проекте студии можно поставить игнор на компиляцию файла в строго оговоренной конфигурации проекта. Этим я пользуюсь для того, чтобы содержать ровно один проект как для сборки консольного приложения, так и для оконного или динамической библиотеки.
    Функции main, WinMain и DllMain лежат в разных файлах, которые включаются в сборку проекта только в нужной конфигурации проекта.
    По хорошему, Qt тоже должен так уметь.
  • Как реализовать кроссплатформенное ПО с библиотеками для Windows/Linux?

    @MarkusD Куратор тега C++
    Добавил к ответу пример расщепления класса файла.
  • Как реализовать кроссплатформенное ПО с библиотеками для Windows/Linux?

    @MarkusD Куратор тега C++
    WayMax , возможно тебе и два проекта библиотек для двух платформ не нужны. Насколько я сейчас понимаю ход твоих мыслей, ты хочешь сделать 3 проекта: один проект GUI для всех платформ и два проекта DLL, по одному для конкретной платформы.

    Только проекта DLL тоже хватит одного, т.е. тебе на самом деле нужны только два связанных Qt проекта - это GUI и API.
    API ты можешь перестроить по описанному мной способу, в результате из одного Qt проекта на разных платформах будет собираться нужный вариант API.
  • Как реализовать кроссплатформенное ПО с библиотеками для Windows/Linux?

    @MarkusD Куратор тега C++
    WayMax , Вот сча прочитал твой коммент к Дмитрий , надеюсь что на мой вопрос о надобности динамической линковки ты не станешь так же реагировать. :)
    Иными словами, у тебя уже есть код и тебе хочется меньшей кровью провести экспансию этого кода на другие платформы?
  • Как реализовать кроссплатформенное ПО с библиотеками для Windows/Linux?

    @MarkusD Куратор тега C++
    WayMax , ага, прочитал изменение в вопросе, только они все так же продолжают смущать меня.
    Для чегож тебе все таки нужны динамические модули, когда можно обойтись статической линковкой при сборке для конкретной платформы?
  • Есть ли смысл использовать inline-функцию?

    @MarkusD Куратор тега C++
    Толстый Лорри , inline в теле класса пишут, т.к. это хорошее пояснение качества функции. И const в параметрах и возвращаемых значениях функций тоже пишут, т.к. это важное пояснение качества функции.
    И не важно, игнорируются эти слова компилятором или нет, код должен быть понятным и содержать документацию в себе.
    Иные утверждения - от лени и слабой культуры.

    Иными словами, не стоит быть таким категоричным. :)
  • Как правильно извлечь числа из битового поля?

    @MarkusD Куратор тега C++
    SibVektor , опять же, все зависит от типов, используемых в объединении. Я очень активно использую такие вещи в форматах файлов и при хранении состояний/статусов/флагов сущностей. Главное - это не испортить разметку битового поля. Для этого тебе в помощь вот такая статья: https://habrahabr.ru/post/142662/
  • Как правильно извлечь числа из битового поля?

    @MarkusD Куратор тега C++
    SibVektor , все зависит от типа значений в объединении. Какой именно код выдает тебе 255 вместо -1?
  • Как используются константы и кастинги?

    Геворг , https://github.com/isocpp/CppCoreGuidelines/blob/m...
    Любое число/строковой литерал или булево значение, напрямую подставленное в коде никак не раскрывает смысла самой подстановки.
    Более того, если в нескольких строчках одной функции ты видишь одно и то же число, скажем 0 или 42, один ли смысл оно имеет во всех этих местах? А если это число надо изменить, то во скольких местах его надо изменить? Во всех или только в одном? Или в двух из 5, в каких именно?

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

    Я советую для самостоятельного ответа на твои вопросы сперва прочитать книгу Дастина Босуелла "Читаемый код или Программирование как искусство".
  • Как определить случайное взятие ASCII-символов?

    @MarkusD Куратор тега C++
    kenny182 , а "оооочень большой" размер - это сколько? Больше 2Мб но меньше 10?
    Ок, маска ASCII таблицы - 0x80, если байт не маскируется, то его можно считать печатаемым в ASCII. Только как ты бинарные данные отличишь от текстовых с помощью этой маски?
  • Подходит ли python для создания GUI бота для MMORPG игр?

    ForSer , для питона приоритеты пунктов в обратном порядке.
    Бот для сапера для начала.

    И не лги себе, все этим спортивным интересом прикрываются. В первую очередь ты уже нарушил лицензионное соглашение с издателем ММО игры.
  • Подходит ли python для создания GUI бота для MMORPG игр?

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

    "Или лучше учить для такой цели какой то из низкоуровневых языков программирования?" - стоп, ты все таки против правил игры пойти хочешь или просто получше питон изучить?

    "насколько это сложная задача если учесть" - начни с IG бота для обычного сапера.

    "мне же интересно возможно ли читать данные из памяти процесса" - Люди это даже на AutoIt делают. О продуктивности этого занятия я рассуждать не берусь.
  • Как привести указатель на класс-предка к указателю на класс-потомок?

    @MarkusD Куратор тега C++
    Noortvel , нужно больше информации.
    Дай краткое определение типов и функции GetAnimInstance. Так же будет полезным увидеть окружение и обоснование необходимости приведения типа.
  • Как писать программы на C++ под android?

    @MarkusD Куратор тега C++
    Nexeon , XCode :)
    Маршалинг типов из ObjC/Swift в C++ и обратно делается куда проще, чем в JNI/JNA/Jni++. Clang умеет сплетать код высокого и низкого уровней в красивую конструкцию. Поэтому для разработки на C++ для iOS кроме XCode толком больше ничего не надо.
  • Что такое анимация и с чем ее кушать если OpenGL?

    @MarkusD Куратор тега C++
    PeroPero , неа, не так. :)
    Давай на примере с этим самым квадратом и этой анимацией. Скажем, за 1 секунду квадрат перемещается на 10 точек по оси X.
    Это будет означать таймлайн ровно с одним ключевым кадром. Таймлайн измеряется в относительных величинах: 0.0 - это начало, 1.0 - это конец вне зависимости от времени анимации. Время задается отдельно от таймлайна и спокойно может меняться прямо в рантайме.
    На таймлайне будет стоять ровно один ключевой кадр - в 1.0 в инструкцией вида "хочу быть смещен на (10.0, 0.0, 0.0)".

    Представление данных может быть примерно таким: Таймлайн - это структура из вещественного числа (длительность анимации) и вектора ключевых кадров. Ключевой кадр - это структура из вещественного числа (относительное время начала) и инструкции в виде математического вектора.

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

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

    Чаще всего анимации выглядят так, чаще всего в них хранятся инструкции преобразования в локальной системе координат анимируемого объекта. Чаще всего SRT трансформацию раскладывают по именованным таймлайнам и применяют к объекту в правильном порядке.

    Как-то так. :)
  • Почему не работает map?

    На каком минимальном наборе проверяешь? У тебя там links случайно не строка?