• Как лучше оптимизировать такие действия с массивами?

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

    Я обращаю на это твое внимание потому что от этого прямо зависит оптимальность твоего кода.
    Описанная тобой задача довольно легко решается средствами C++, а решение будет многократно быстрее твоих ожиданий от Питона. Но весь вопрос в том, сможешь ли ты создать подходящую структуру кода для реализации твоего решения.
    Предполагается что в дальнейшем будут храниться структуры данных в виде словарей, в которых ключом является число - длина строк, а значением массив строк такой длинны.

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

    Вообще было бы неплохо если бы ты показал свой код решения задачи. Можно было бы подсказать что-нибудь конкретное.
  • С помощью каких библиотек можно визуализировать граф?

    @MarkusD Куратор тега C++
    ColdHandGuy, ясно, хорошо. Еще один вопрос. Я ведь правильно понимаю что тебе нужна визуализация подобного такому графа?
  • С помощью каких библиотек можно визуализировать граф?

    @MarkusD Куратор тега C++
    ColdHandGuy , насколько для тебя важна реализация на C++, а не на другом языке?
  • Как при трансляции осуществляется связывание кода?

    @MarkusD Куратор тега C++
    Dolarun, смотри. Благодаря тому что я использую упоминания, ты имеешь возможность видеть что тебе отвечают.
    Почему я должен заходить и перепроверять, не ответил ли ты мне? Тебе не нужны ответы на твои вопросы? Хорошо, без проблем. Сделаю вид что я сюда не заходил, не проверял, уведомлений об ответе не получал, а значит ты на мой уточняющий вопрос не отвечал по своим соображениям.
  • Как при трансляции осуществляется связывание кода?

    @MarkusD Куратор тега C++
    Dolarun , "A" и "B" - это статические библиотеки? Или динамические?
  • Почему при попытке сборки TinyXML2 выдает ошибку?

    fasmog , тебе стоит показать сценарий сборки своего проекта. Ошибка находится там.
  • Что со шрифтами при прокручивании страницы?

    Сергей Карбивничий , так а полноценное решение имеется или все авторы ограничились только заданием череды вопросов на одну тему?
  • Можно ли использовать TCP протокол для игрового сервера?

    ASMcoder-Source , вот ответ на твой вопрос.
    У тебя протокол не настроен просто. Тебе нужно отключить буферизацию и перевести сокеты в неблокирующий режим. При этом дискретизацию 8мс на клиентах ты все равно не получишь в виду накладных расходов TCP.

    Тебе нужно уметь интерполировать позицию персонажа по данным из сети.
    Но в плане коррекции больше ничего сказать не получится пока ты детально не расскажешь о своей сетевой механике. Какая у тебя локация, какой у тебя тип перемещения, какие именно данные ты пересылаешь и все подобное.
  • Теряются/бьются UDP пакеты на localhost, так и должно быть?

    @MarkusD Куратор тега C++
    Kalombyr, ясно. У тебя тут, вероятно, целый букет заболеваний. И я ведь правильно понимаю что ты не проверяешь ошибку при отправке данных в своем коде?
    Конкретику я все так же не могу выдать потому что по такому описанию надо смотреть код. А это может занять много времени, чего я не могу тебе предоставить.
    Поэтому я просто опишу то, что подозреваю исходя из твоего описания.

    Короткие датаграммы - это хорошо. В локальной петле MTU имеет размер 64КБ. Пакеты в 1КБ - это уже хорошо.
    Шаринг сокета - это одна из причин потери пакетов. Вот попробуй угадать, кто должен принять трафик, когда сокет одновременно читают N клиентов? Там просто кто первый прочитал, того и тапки.
    Пакеты в локальной петле для протокола UDP теряться будут только если ты их шлешь без меры. У локальной петли есть свой промежуточный буфер для передаваемых данных. Когда этот буфер забивается данными, а на том конце их так и не начали читать, sendto возвращает тебе ошибку, которую ты должен разобрать и понять.
    Поэтому я и подозреваю что у тебя ошибки не обрабатываются.

    Проверь попутно размеры буфера приема и буфера отправки в своем сокете. Это делается через getsockopt или его аналог для Qt. В POSIX свойства называются SO_RCVBUF и SO_SNDBUF.
  • Можно ли подменить WS2_32 библиотеку и есть ли готовая обёртка?

    @MarkusD Куратор тега C++
    Kalombyr, как насчет того чтобы дать ответ на мои вопросы?
    Ты, конечно, можешь не отвечать. Но это ведь тебе нужно чтобы у тебя всё начало работать.
  • Как можно исправить ошибку сборки jsonlib при ее установке через pip?

    Mr_Kurator , почему люди должны портить свои глаза в попытках разобрать мыло на твоих скриншотах?
    Может быть тебе стоит удалить скриншот с текстом и выставить текст в соответствующем теге?
    Примерно так, как того требует П3.8 регламента работы сервиса.
  • Теряются/бьются UDP пакеты на localhost, так и должно быть?

    @MarkusD Куратор тега C++
    Kalombyr , а конкретика где?
    Какой у тебя трафик? Какой размер датаграммы? Какая частота опроса сокета тут и там?
    С какими флагами делаешь отсылку и прием датаграмм?
  • Как обходить защиту от записи экрана на сайте?

    mercmarcus
    upd2. Решено. Установил OBS и в источнике показал браузер (ссылку).

    Это принято писать в самостоятельном ответе и помечать ответ как решение.
    Не оставляй свой вопрос без решения.
  • Возможно ли создать на с++ дополнительное консольное окно?

    @MarkusD Куратор тега C++
    v12maksv13
    вот код

    Прошу повторно ознакомиться с регламентом работы сервиса и обратить внимание на П3.8.
    Неразборчивый текст в мыльных изображениях никого не интересует. Код нужно оформлять согласно регламенту.
  • Как работают массивы в с++?

    @MarkusD Куратор тега C++
    Borshevistiy, ты фотопленку глазами видел же? Знаешь что это такое? Сможешь ведь отсчитать N кадров от первого чтобы попасть на N-й кадр?
    Если глазами не видел, посмотри как она выглядит на старых фотографиях или в гуглокартинках.
    Один кадр фотопленки - это один объект. Сама фотопленка - это массив кадров.
  • Существует ли тенденция избегать size_t, если это возможно?

    @MarkusD Куратор тега C++
    floppa322, инструмента боится тот, кто не умеет им пользоваться :)
    Integral promotion [?] имеет место всегда быть и нередко приводит к UB для знаковых типов.
    Советую тебе бороться со страхом через познание.

    EASTL ?)

    Не, свой, кондовый, самописный с нуля еще в нулевых и нерабочий сегодня более чем на половину.
    Дело в том, что среди слабо квалифицированных пользователей C++ бытует мнение что для беззнаковых типов генерируется более тяжелый код с поведением wrap around, в то время как UB - это поведение, которого не может быть. И вот в умах таких людей уже зреет мнение о том, что код работы со знаковыми значительно быстрее.
    Но реальности плевать на их фантазии, целочисленная арифметика работает как и должна.

    Чисто к слову. Для size_t Integral promotion не выполняется по своему определению.
  • Существует ли тенденция избегать size_t, если это возможно?

    @MarkusD Куратор тега C++
    floppa322, не, программист в реальном коде увидел бы сразу что тут написана дичь :)
    Однако, приведенный тобой код с оговорками иногда случается на практике. И от таких ситуаций люди просто предохраняются всего одним сравнением. Это очень просто сделать и такую ситуацию очень легко предотвратить.

    Гораздо сложнее обстоят дела с точно такой же проверкой знакового целого. Представь себе что в блоке else ожидается строго неотрицательное значение (sizeof(int) - 10). О проверке на неотрицательность мы ровно так же забыли, как и о проверке переполнения с беззнаковым размером.
    И в результате твой же собственный код ровно так же приплыл, просто в другом месте.

    И еще интереснее дела обстоят с переполнением знакового - т.е. с UB в коде. Я когда-то уже имел дело с профессиональным кодом профессионального игрового движка, где есть свой STL и в нем все размеры указываются в int. И знаешь что? Там UB изо всех щелей торчит в коде. Тут размер выделили, там умножили, сям прибавили и... ой... UB...
    А ведь, на секундочку, переполнение int наступает уже просто тогда, когда ты решаешь выделить битовую матрицу 8192x8192 с ячейкой в 64 бита. Или битовый объем 512*512*512 с ячейкой 32 бита. Там выходит ровно 4ГБит информации. Да, такие размеры иногда бывают нужны. Это всего 536МБ.
    А еще с int в качестве размера все время приходится проверять на соответствие диапазону вместо одиночной проверки для беззнакового.

    Но и это еще не все. Чтобы увидеть надуманность твоих доводов в комментариях к решению, достаточно просто прочитать документацию. Яб оформил свою речь в ответ если бы обладал достаточным временем. Но времени у меня сейчас нет. Поэтому оставляю этот момент с документацией на тебя. :)
  • Существует ли тенденция избегать size_t, если это возможно?

    @MarkusD Куратор тега C++
    floppa322 ,
    тенденция избегать size_t из-за того, что он является беззнаковым, например, чтобы не попасть на неожиданные signed/unsigned promotion'ы или остатки по модулю 2^N ?

    Специально выделю в цитату чтобы показать что я это прочитал. Потому что.

    И все же, есть ли какие-либо причины действительно избегать типа size_t? К обозначенному в цитате еще вернемся отдельно.
    Или, наверное так. Есть ли какие-либо причины использовать тип знакового целого вместо size_t?
  • Надо ли добавлять сессию в каждый пакет UDP?

    Армянское Радио, для меня, на самом деле, оба транспортных протокола выглядят равнозначными при соблюдении условий их применения.
    UDP действительно позволяет быстрее доставить данные. Более того, зачастую я могу даже отключить проверку целостности датаграммы чтобы повысить шанс ее доставки ценой порчи ее данных. Доставка хоть части данных бывает выгоднее ее потери из-за повреждений.
    TCP же позволяет рекордно сократить расходы на разработку протокола за счет своих свойств тогда, когда важна не только гарантированная доставка, но и доставка со строгим соблюдением очередности данных.

    Исходя из свойств игры, требований к сети и условий разработки можно сделать выбор между одним или другим. И не всегда этот выбор бывает окончательным. При необходимости TCP можно позже заменить более быстрой схемой гарантированной доставки на базе UDP от Гленна Фидлера.