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

    @MarkusD Куратор тега C++
    Vitaly, в нашем распоряжении есть термин SCU и техника амальгамамирования кода. На вход подается проект с красивой макроархитектурой, а на выходе - единичный заголовок и/или модуль трансляции.
    Люди считают такой подход эффективным с точки зрения времени сборки и прозрачности распространения.
    Если заглянешь поглубже в репку clmg, то заметишь что там на самом деле все вполне как у людей.

    Системы сборки вроде Incredibuild или fastbuild по умолчанию амальгамируют код в SCU перед распределением сборки.
  • На чем написан бекенд в крупных приложениях?

    tr1ck1 , в вопросе стоит прояснить критерии оценки крупности приложений. Также в вопросе стоит прояснить области рынка интересующих тебя крупных приложений.
  • Как работать с usb устройством в JAVA и С++?

    @MarkusD Куратор тега C++
    Neckvik, в первой строке своего прошлого ответа я привел два поисковых запроса, по которым на первой же странице даются вполне подробные ответы на твой вопрос. Сами поисковые запросы показывают общий стиль подобных запросов.
    Ответы на твой вопрос, понимаешь, сами собой сводятся или к перепечатке материалов из интернета, или к предоставлению тебе ссылки на поисковик с готовым поисковым запросом.
    Все это немного не согласуется с правилами Тостера - П2.2.
  • Как работать с usb устройством в JAVA и С++?

    @MarkusD Куратор тега C++
    А пробовал ли ты искать материалы по интересующему тебя вопросу?
    Какой ответ ты ожидаешь от пользователей Тостера? Перепечатку статьи в ответ? Или твои вопросы решатся если в ответе будет подборка ссылок на материалы в интернете?
    В частности, на Java есть такие ссылки:
    usb4java.org
    usb4java.org/quickstart/javax-usb.html
    https://stackoverflow.com/questions/644241/how-can...
  • Зачем нужны пакеты VC++, .NET Framework, Java Runtime, DirectX?

    HungryGary, стал ли данный ответ решением твоего вопроса?
  • Как ограничить FPS в OpenGL и glut?

    @MarkusD Куратор тега C++
    Герман
    UPD: Вопрос решён. Помогла функция glutTimerFunc(), убираем glutPostRedisplay() из idle-функции, создаём таймер с обновлением в 1000/FPS_LIMIT миллисекунд и создаём новый таймер в том таймере, тем самым таймер создаёт другой таймер и так по кругу.

    И это неправильный подход, если тебе интересно, конечно. Таймеры нужны для другого. Своим способом ты расходуешь ресурсы системы, шаг отрисовки у тебя будет сильно неравномерным, отменить запланированный таймер ты уже не сможешь, а еще тебя ждет гора мороки если тебе захочется синхронизировать временные процессы при отрисовке с таким контролем частоты.
    Если надо, я могу показать более стандартный способ ограничения FPS в idle-функции.
  • Как сохранить копию string?

    @MarkusD Куратор тега C++
    Quad_Tree, как я вижу, ни один из ответов не подходит под решение твоего вопроса. Предлагаю тебе самому изложить в своем ответе суть решения проблемы и поставит отметку решения. Так другие люди с чем-либо подобным смогут сориентироваться в твоем вопросе.
  • Как сохранить копию string?

    @MarkusD Куратор тега C++
    Quad_Tree, правда, мое решение будет избыточно хранить дубликаты строк.
    Потому я и попросил задание целиком. Такие нюансы стоит знать заранее.
    В таком случае использовать лучше даже не std::vector<std::string>, а std::set<std::string> и все те же две
    std::unordered_map<std::string_view, std::string_view>
    . Set позаботится о том, чтобы хранить только уникальные строки. У std::set, кстати, тоже есть функция emplace.
  • Как сохранить копию string?

    @MarkusD Куратор тега C++
    Quad_Tree, по твоему заданию ассоциативный контейнер - это правильно, но только не std::map, а std::unordered_nap. Тебе стоит самостоятельно понять принципиальную разницу этих контейнеров и почему первый в твоей задаче непригоден.
    Тебе надо сделать два поля одинакового типа: std::unordered_map<std::string, std::string>. Первый контейнер хранит прямой перевод, второй - обратный перевод. Контейнеров два т.к. слова в разных языках могут писаться одинаково, а значения у них могут быть разные и переводы, следовательно, тоже разные.
    Заносить строки в контейнеры надо через функцию emplace. Изучи документацию и найди для себя обоснование - почему именно эта функция будет эффективнее всего работать с парой std::string_view в качестве параметров.
    Обоснование использования std::string в качестве параметров шаблона std::unordered_nap таково, что TranslateForward возвращает std::string_view, который не владеет памятью на которую ссылается. Вместе с этим, тип std::string_view не рассматривается как тип долгосрочного хранения (рассматривать его как долгосрочное хранилище - в большинстве случаев опасно). Такая сигнатура требует от Translator владеть памятью строк возвращаемых из функций Translate*.
  • Как сохранить копию string?

    @MarkusD Куратор тега C++
    Quad_Tree
    В самой задаче использование string_view оправдано экономией памяти.

    Не оправдано, т.к. для сохранения строки в своем контейнере ты сейчас делаешь два выделения памяти на каждый параметр.
    Translator::Add(string("first"), string("second")) - первое выделение делается вот тут. Зачем?
    data.emplace_back(first) - второе выделение делается вот тут и ниже во втором emplace_back.

    Выпиши в теле вопроса под спойлером текст задания.
  • OpenGL не сразу отображает данные из кадрового буфера?

    @MarkusD Куратор тега C++
    Герман, пожалуйста, конеч. А что, решением мой ответ для тебя не является? :)
  • Как сохранить копию string?

    @MarkusD Куратор тега C++
    Quad_Tree , какую задачу решает std::string_view в качестве типа параметров твоей функции?
    Может ли эту задачу с большим успехом решить какой-либо другой тип?
  • Как создать массив списков C++?

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

    @MarkusD Куратор тега C++
    Герман, так а у тебя там проблема с логикой.
    Окно у тебя перерисовывается раз в секунду. Это стоило бы стразу подметить.
    А перерисовывается оно у тебя так потому что ты неправильным образом и в неправильном месте указал рандомизацию.
    srand((unsigned)time(NULL)); - в течении секунды твое зерно будет одинаковым, а следовательно и все нарисованные точки тоже будут одинаковыми. Функция time возвращает текущее количество секунд в UTC формате. Тебе не стоило писать эту строчку в displayFunction, тебе стоило написать ее в main точно перед glutInit.
    А вызов glutPostRedisplay внутри idle-функции - это правильно, так в GLUT и поступает запрос на перерисовку кадра.
  • Как передать файл для записи в пользовательскую функцию C++?

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

    Что мне надо сделать? - Отрыть файл.
    Какой файл открыть? - Значит или путь файла известен внутри функции, или передается параметром.
    Для чего открыть файл: для записи или для чтения? - Видимо или функция должна своими именем об этом говорить, или режим работы с файлом надо передавать параметром.
    А что делать с дескриптором открытого в функции файла? - Возвращать, пожалуй.
    А что если файл не удалось открыть? - Наверное надо предусмотреть обработку ошибок и возвращать недействительный дескриптор файла.
    Зачем мне нужен дескриптор открытого файла? - Чтобы считать оттуда что-либо или записать туда что-либо.
    Что мне надо сделать чтобы считать из файла что-либо? - ...
    Что мне надо сделать чтобы записать в файл что-либо? - ...
    Что мне делать с дескриптором открытого файла когда он больше не нужен? - ...

    В общем, рассуждай о том, что тебе надо сделать: ставь задачи и ищи решения.
    Посмотри как другие люди решали те задачи, которые ты себе ставишь. (например)
  • Как передать файл для записи в пользовательскую функцию C++?

    @MarkusD Куратор тега C++
    Дмитрий
    Но вот вынести в отдельные функции Создание файла, Запись данных и Считывание данных не могу.

    Расскажи, что именно тебе непонятно. Покажи примеры своих попыток это сделать и поясни почему эти попытки не приводят к нужному тебе результату.
  • C# или C++, что выбрать со связкой с Python'ом?

    frontjss, что-то я не пойму, какая же все таки связка с языком подразумевается.
    Тут, понимаешь, то что ты описываешь и через расширение питона делается, и через IronPython тоже, и через Python .NET точно так же делается. "Расширение возможностей" - это каких? Это расширение через модуль питона? Или это расширение для C++ через Iron/Stackless Python? Или это расширение для C# через Python .NET?
    В твоем вопросе остро нехватает конкретики. Без конкретики не получится дать тебе хороший совет, который действительно поможет тебе решить задачу.
  • C# или C++, что выбрать со связкой с Python'ом?

    Какая именно связка с питоном подразумевается?
  • OpenGL не сразу отображает данные из кадрового буфера?

    @MarkusD Куратор тега C++
    С помощью glFlush ты говоришь конвейеру форсировать выполнение всех запланированных команд.
    Сама эта функция не синхронизирует вызывающий поток с фактом исчерпания буферов конвейера.
    Вызов glFlush является хорошим тоном в ряде случаев. Однако, в документации GLUT сказано что glutSwapBuffers самостоятельно делает вызов glFlush.
    Поэтому для тебя этот вызов является избыточным.

    С другой стороны, если ты не используешь двойную буферизацию, то и glutSwapBuffers тебе не нужен. В этом случае достаточно только вызова glFlush.