Ответы пользователя по тегу Программирование
  • Как передать конструктору класса thread функцию-член класса?

    Класс thread понимает только функторы. А методу класса нужен еще указатель на сам класс. Поэтому указатель на метод вместе с this надо завернуть в функтор. Сейчас это красивее всего делается с помощью labmda функции. Еще можно использовать std::bind, сделанный специально для таких случаев, но ИМХО лямбда лучше читается.
    Ответ написан
    Комментировать
  • Генерация дробного числа с заданной точностью на C++

    Компьютеру неудобно работать с числами с разной точностью. У него есть аппаратно реализованные float и double, которые работают быстро. Соответсвенно все решения, которые вам тут предлагают сводятся к получению случайного числа с большой точностью и загрубления его до указанной вами. У меня есть сомнение, что для метода Монте-Карло это загрубление вообще нужно.
    Ответ написан
    Комментировать
  • Обработка ошибок?

    Если произошла ошибка (в том числе и при поиске), то безусловно исключение (если они есть). Т.е. в случае с поиском, если найти не можем из-за ошибки соединения с БД или некорректных условий поиска.
    А если найти не можем из-за того, что элемента нет и это нормальная штатная ситуация, то использовать специальное возвращаемое значение. В языках с динамической типизацией это как правило None, null или подобный тип. Если None может храниться в коллекции и является допустимым возвращаемым значением, то, например в питоне, часто создают класс с именем тип NotFoundError и возвращают тип класса. Он гарантированно не является валидным значением.
    В языках со статической типизацией используют либо что-то вроде boost::optional т.е. структуры из значения и флага, либо возвращают указатель/итератор для которого есть специальное пустое значение.
    Ответ написан
    Комментировать
  • Какие инструменты вы используете при отладке сохранения/загрузки файлов собственного формата?

    А что вынуждает использовать сложные собственные бинарные форматы? Есть protobuf, обеспечивающий возможность кроссплатформенного чтения полученныз записей и возможность добавления новых полей без потери бинарной совместимости. Еще есть bson.
    Или нужна сверхэффективность и возможность загрузить данные как есть в память, скастить указатель и пользоваться уже загруженным классом?
    Ответ написан
    1 комментарий
  • Как определить кодировку id3-тега?

    Что-то вы путаете. В кодировке latin1 нет кириллических символов. Скорее всего там cp1251.
    Знаки вопроса выводятся вместо непечатных символов, которые могут иметь специальное значение и нарушить нормальную работу терминала. Безопаснее вывести знаки вопроса, тем более что смысла в бинарных крякозябрах вы много не увидите.

    В эксплорере windows и плеерах оба тега выводятся нормально. Как они определяют кодировку?

    С помощью магии. Анализируют ичпользуемые символы, частоты их появления, устойчивые комбинации символов. Самые продвинутые плееры просто считают, что теги в UTF-8, а все, кто хранят их в другой кодировке глубоко неправы. Лучше всего пользоваться как раз такими плеерами. Проблем меньше будет.
    Ответ написан
    1 комментарий