Задать вопрос
  • Как можно сделать перебор по массиву быстрее?

    Если радикально не переписывать - никак.
    Если перейти на Span, как ты рядом советуют - получишь выигрыш в пару процентов.

    У тебя основное замедление происходит из-за того что:
    1. На каждый someItem ты делаешь вызов _additionItemsSerivce
    2. На каждый property ты делаешь вызов UpdateProperties

    Тебе следует в первую очередь переписать код так, чтобы уменьшить количество этих вызовов.
    Ответ написан
    Комментировать
  • Как можно передать структуру в printf, а к переменным её обращаться из шаблона?

    GavriKos
    @GavriKos
    Сделать свою реализацию printf/tostring/<>> у структуры.
    Ответ написан
    Комментировать
  • Как скомпилировать программу linux?

    hint000
    @hint000
    у админа три руки
    Есть такой код (не мой)

    Что я делаю не так?
    1. вы не даёте ссылку на источник кода, а это могло бы упростить разбор.
    2. вангую, что этому коду лет десять, может быть меньше, может быть больше. Давайте посмотрим, какие версии ядра Linux были поддерживаемыми лет 10 назад; а это были версии 2.6.x и 3.x.x; версия 4.0 впервые появилась в 2015 г., версия 5.0 - в 2019 г. Уже поняли, на что я намекаю? Вы пытаетесь подсунуть компилятору исходники ядра одной из последних версий, на которой этот код, возможно, никто вообще не тестировал. Сколько там изменений было за десяток лет... Короче, пробуйте его скомпилировать вместе с исходниками 3.x. Если ошибок будет хотя бы меньше - уже кое-что.
    Ответ написан
    Комментировать
  • Как реализовать отображение чертежей в winForms?

    @rPman
    Вне зависимости от использования библиотек или фреймворка общая идея ускорения вывода большого количества примитивов или просто сложные объекты, есть разные подходы:
    * кешировать результат, в твоем случае можно в памяти создать битмап и отрисовывать в него, тогда при перемещении окна просмотра в него перерисовывать объекты не понадобится
    недостаток - при большом размере холста (в пикселах) будут повышенные требования к оперативной памяти
    * частично кешировать результат, чем то таким занимаются разработчики/движки игр, когда далекие сцены, внешний вид которых не меняется при локальных перемещениях игрока, заменяются на заранее отрендеренный битмап (текстуру) и рисуют простой спрайт
    В общем это перераспределение нагрузки между процессором и оперативной памятью, либо ты постоянно перерисовываешь все объекты на сцене либо ты это делаешь реже но хранишь все в памяти
    * воспользоваться видеоускорителем, красивого решения именно для c# у тебя не будет, это вообще не подходящий инструмент. Смысл в том что современные видеоускорители, даже если это оффисный, встроенный в процессор, способны отрисовывать миллионы примитивов, но разработка приложения будет похожа на разработку игры, и готовые фрейамворки либо ограничат тебя в возможностях либо из-за того что используешь неподходящий инструмент, ты будешь тратить время на переходы от managed разработки до нативной
    погугли .net using gpu acceleration
    если ты готов к вендорлоку nvidia посмотри на их движок
    Ответ написан
    Комментировать
  • Уменьшается ли используемая память программы?

    bingo347
    @bingo347
    Crazy on performance...
    Во-первых, размер стека фиксирован, стек выделяется в момент запуска потока.
    Во-вторых, компилятор и сам достаточно умный, чтобы переиспользовать стек под разные переменные использование которых не пересекается.
    В-третьих, экономия на спичках, а читаемость ухудшается.

    P.S. такую штуку действительно иногда используют, но ради того чтоб вызвать деструктор в нужной точке кода.
    Ответ написан
    Комментировать
  • Должен ли RESTful API возвращать 200 OK при запросе списка записей категории, если сама категория не существует?

    AleksandrB
    @AleksandrB
    Совсем недавно вывел "Hello world"
    Категория - это ресурс, такой ресурс существует? Нет. Значит 404
    И пустое тело, но ресурс существует - это 204, а не 200
    Ответ написан
    Комментировать
  • Что можете сказать про данный код?

    @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
    Замените строку
    if (planets[i].name == name_d)
    на
    if (planets[i] == name_d)
    Если хотите, чтобы вызывался operator==
    Но у вас там кроме этого ещё очень много странностей.
    Зачем сравниваете строки напрямую? Есть strcmp
    Зачем вообще работаете с сырыми строками, если даже не следите за очисткой памяти?
    Лучше замените все на std::string.
    Ответ написан
    Комментировать
  • Почему не получается скомпилировать файл через wsl на c?

    Для компиляции используется gcc, а не make.
    Ответ написан
    Комментировать
  • Как изменить свойства виджета Qt из другого виджета?

    @dima20155
    you don't choose c++. It chooses you
    Используйте сигналы и слоты.
    Ответ написан
    2 комментария
  • Как на микротике ограничить интернет, но открыть локалку при использовании kid control?

    @dronmaxman
    VoIP Administrator
    Можно.Выключи KidControl и добавь в конце всех правил
    /ip firewall add action=accept chain=kid-control comment="Allow localnet for kid-control" dst-address=192.168.88.0/24 src-address=192.168.88.0/24

    Когда включишь KidControl, это правило должно оказаться над остальными правила KidControl и разрешать трафик в локальной сети.
    192.168.88.0/24 - это адресация твоей локальной сети

    В целом мне тоже кажется логичным, что ограничение доступа в интернет не должно касаться локальной сети, возможно микротик исправит эту ситуацию в будущем.
    Ответ написан
    1 комментарий
  • Как реализовать идентификацию объектов?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    unordered_map<ID, Material>
    Ответ написан
    Комментировать
  • Проверка, инвентаризация и аудит Linux машин, как можно узнать про установленный софт?

    Vindicar
    @Vindicar
    RTFM!
    Составить список популярных пакетных менеджеров и команд их вызова. Разные дистры используют разные менджеры (apt и yum встречаются чаще всего, ЕМНИП).
    Для каждого менеджера попытаться получить список установленных пакетов. Также иметь ввиду, что данного менеджера может и не быть на данной машине.
    Свести результаты в один список.

    Например, для дистров, которые используют apt (Debian и его потомки), это либо apt-mark showmanual, либо apt list --installed | grep -v 'automatic' (чтобы исключить пакеты, которые были поставлены как зависимости для других). Но и там будут пакеты, поставленные при установке ОС.

    Если хочется ну прямо супер детальный анализ... найти все файлы, помеченные как исполняемые. Потом узнать список установленных пакетов. Для каждого пакета узнать список установленных файлов. Исключить эти файлы из числа найденных. То, что останется, было установлено помимо менеджера пакетов и потому заслуживает более пристального внимания. Но сам понимаешь, это долго и жорко, ну и всё равно может не дать 100% покрытия. Грубо говоря, если некий файл script.sh не помечен как исполняемый, его всё равно можно запустить через bash script.sh.

    Я думаю, стоит обращать внимание, если в списке установленных пакетов есть wine, mono или виртуальные машины. В остальном... вряд ли что-то найдётся.
    Ответ написан
    Комментировать
  • Активна ли служба?

    Adler_lug
    @Adler_lug
    Может быть serviceController.Status?
    Вы объявляете:
    string service
    Откуда у строки (string) какой-то там Status?
    Ответ написан
    2 комментария
  • Недостаточно аргументов для шаблона класса std::array как решить?

    Простое решение 1 - убери using namespace std;, чтобы cli::array не конфликтовал с std::array
    Простое решение 2 - напиши явно cli::array<String^>^
    Ответ написан
    5 комментариев
  • Выводит System.String[] вместо строки Windows.Form как испровить?

    freeExec
    @freeExec
    Участник OpenStreetMap
    этот string не имеет функции ToString, которая возращает строку, а имеет ту ToString, которая возращает System.ToString[]

    Тут у вас и проблема. Потому что это не string, а string[]. И вам надо самому написать логику, как из массива строк получить строку.
    Ответ написан
    Комментировать
  • Почему переопределение метода без virtual -- это не переопределение?

    @res2001
    Developer, ex-admin
    Переопределить можно в любом случае, хоть с virtual, хоть без.
    Но тут важно что вам надо от переопределенного метода. Если вам нужно использовать полиморфизм, то нужно ставить virttual, если нет - то нет.

    Например дополним ваш пример функцией:
    void func(struct A &a)
    {
      a.fn();
    }
    
    int main() {
      B b;
      b.fn();
      func(b);
    }

    И передадим туда ссылку на b. Будет напечатана А, т.к. методы fn не виртуальные.
    Если были бы виртуальные, то напечатается B - полиморфизм в действии.
    Ответ написан
    Комментировать
  • Как скомпилировать консольное приложение для Android?

    @rPman
    Общая идея android приложений - это dalvik bytecode (обычно это java) виртуальная машина, но разрешается использовать нативные библиотеки

    Соответственно пишешь минимальное приложение на java (пусть даже без gui, а вывод при необходимости делать в системные логи), которое первым делом подключит библиотеку, которую так же помещаешь в apk.

    Исторически это называется java native interafce, позволяет навести мосты между java приложением и нативным c/c++.

    дока - https://developer.android.com/studio/projects/add-...
    немного про android jni - https://developer.android.com/training/articles/pe... там же слева смотри ссылки как собирать

    Это очень трудоемкий путь, помимо того что придется пробираться через дебри jni прослойки и ограничений, понадобится поддерживать все многообразие железа (архитектур) причем как 32-битных так и 64-битных, где уже на этапе их сборки и отладки появится миллион проблем, т.е. не только x86 но и arm, причем последний это не пара а много много - arm64-v8a , armeabi , armeabi-v7a ... (больше если надо поддерживать старое железо)
    Ответ написан
    Комментировать