Задать вопрос
  • Сработает ли деструктор, присвоив atomic?

    wataru
    @wataru Куратор тега C++
    Mercury13, Короче. Я понял. Это у вас оппортунистская проверка - задетектить UB после того, как оно произойдет. Оппортунистское, потому что все-равно может на какой-нибудь системе упасть во время проверки данных не в своей памяти, плюс то что там кто-то левый положет потом может случайно стать равно SCRAMBLE.

    И ответ на ваш вопрос - нет, компиялтор может и удалить. Есть всякие платформо-зависимые функции для гарантированного зануления памяти, но как их прикрутить к атомикам - я не знаю. Но вообще компилятор может додуматся, что во время жизни объекта value не меняется и вообще удалить проверку нафиг.

    Я бы не городил этот огород, а использовал тот же valgrind для проверки. Ну или, если хотите, то вам придется написать собственный менеджер памяти. Переопределить new и delete и или не удалять память вообще и там внутри где-то как-то помечать (например, выделить на 4 байт больше перед данными). Или где-то запоминать, что память отчищена и проверять на висячие указатели какой-то функцией, отдельной от возможно удаленного объекта.
  • Сработает ли деструктор, присвоив atomic?

    wataru
    @wataru Куратор тега C++
    Mercury13,
    У живого объекта проверочная цифра правильная, а у умершего


    Умершего объекта обычно больше нет. Его память возвращена системе, или переиспользована для других данных компилятором. Любое обращение к памяти объекта после вызова деструктора (если вы его руками, конечно, не вызываете) - это уже обращение по висящему указателю, что есть UB.

    Если же вы сами руками вызываете деструктор у объекта (при этом у вас должен быть собственный какой-то менеджер памяти), то в этом случае, раз вы все еще хотите обращатся к какому-то полю объекта, вам стоит его не уничтожать, а переводить в "невалидное" состояние. Память все-равно не освобождена - ведь иначе UB будет. Для этого будет достаточно тупо bool is_alive и не надо какую-то защиту с канарейками городить. Ну или использовать первые несколько байт для пометки о валидности объекта, а остальные реинтерпритировать как ваш объект, тогда проверка будет как бы отдельно от логики самого объекта.

    QModelIndex слишком мал, чтобы держать умный указатель
    Не совсем понимаю контекст.

    Объект может быть потёрт не только деструктором, но и совершенно посторонним кодом.


    Это каким таким кодом? Если только у вас не собственный менеджер памяти, то объект трется при вызове delete на указателе, или после выхода переменной из scope. А деструктор обычно не трет объект, а лишь вызывается автоматически перед его "удалением" (не считая вызова free какого-нибуть).
  • Какие есть Алгоритмы генерации сетки Судоку?

    wataru
    @wataru Куратор тега Алгоритмы
    Непонятно: вам нужен алгоритм составления пазла, или алгоритм решения?

    Не ужели за столько лет ничего нормального не придумали или я плохо гуглил ?


    Неважно, как много лет ждать, если что-то невозможно - оно не случится.
  • Какие разработчики работают с алгоритмами?

    wataru
    @wataru Куратор тега Алгоритмы
    Alexandroppolus,

    В условиях ограничений по времени и "враждебной" обстановки это нервирует, надо быть в хорошей форме. А так, всякие кодоварсы и кодофорсы пользуются успехом.


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

    wataru
    @wataru Куратор тега Алгоритмы
    низкомолекулярный макрос, Алгоритмы, как фундаментальная математика. Переодически появляется что-то более эффективное, но старые алгоритмы от этого не становятся медленнее. И улучшение обычно не такое большое. Разница между старым O(n log n log log n) и новым O(n log n) алгоритмами не такая принципиальная, как между наивным O(n^2) и старым алгоритмом за O(n log n log log n).

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

    wataru
    @wataru Куратор тега Математика
    По свойствам таких групп достаточно взять любой элемент, кроме единицы и нуля, и его степени дадут вам все элементы.


    Неправда.

    Если для вашего многочлена x является генератором, то x^3 им точно не является. Потому что в мультипликативной группе должно быть 15 элементов. Если взять x^3 то оно сгенерирует x^6, x^9, x^12, x^15 = 1. Только 5 элементов.

    Это так всегда, если мощность группы не простое число.
  • Существует ли такой алгорим?

    wataru
    @wataru Куратор тега Математика
    Mercury13, можно усложнить. пусть dosomething берет и выполняет a-ый в лексикографическом порядке алгоритм, передав ему b. Множество алгоритмов же счетное?

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

    wataru
    @wataru Куратор тега Математика
    Mercury13, ну так точно так же могут быть частичные решения для задачи останова. Это неконструктивное доказательство. Я не знаю, что за dosomething() в искомом алгоритме. Но я знаю, что оно существует. Потому что иначе бы задача останова решалась.
  • Суть макросов в с++?

    wataru
    @wataru Куратор тега C++
    Adamos, Ну так и делать из sort макрос - это дикость какая-то. Тут явно, делают что могут, даже не задумываясь - зачем.
  • Как заполнить конец каждой строки символом '*'?

    wataru
    @wataru Куратор тега C++
    marlaaa, Есть. Во-первых, там где вы выводите перевод строки - там у вас отступ неправильно поставлен. Эта инструкция вне цикла. Во-вторых, чтобы поменять порядок вывода, вам надо переставить местами циклы, где вывод поисходит.
  • Как проверить введенное римское число на правильную запись?

    wataru
    @wataru Куратор тега Алгоритмы
    Интересно, откуда этот автомат взялся. Не регулярка ли лежит в его основе?
  • Почему неправильно выводит максимальное число?

    wataru
    @wataru
    dzzaad, Еще раз медленно.

    проходим по длине - 1, чтобы проверить максимально ли число


    Пока ладно, но важно, что там внутри делается. Действительно ли в этом цикле вы находите максимальное число?

    выводим i-тый и i-1 элементы

    Ok.

    сравниваем их


    Да, сравниваем.

    mx = numbers[i+1] # присваиваем к mx максимальное из i-тый и i-1 элементы


    Нет. Вы не присваиваете максимум из двух чисел в mx. Вы присваиваете mx второе число, только если оно больше. Иначе ничего не происходит.

    После вашего добавления else ваши комментарии действительно становятся верными, кроме одного к циклу. Почему из "присваиваем к mx максимальное из i-тый и i-1 элементы " следует, что цикл "чтобы проверить максимально ли число"?

    Вы внутри не ищите максимум в массиве, а много раз присваиваете переменной максимальное из двух чисел. В переменной будет в итоге результат последней операции - а именно максимум из двух последних чисел. Если, как в примере в вопросе, максимум во всем массиве не в конце - вы его не найдете.

    Подсказка: Результат работы прошлых итераций как-то должен учитыватся в следующих. Вы этот результат кладете в mx. Значит записанное в mx значение должно как-то влиять на вычисление mx дальше.
  • Нахождение определенного интеграла модуля косинуса?

    wataru
    @wataru Куратор тега Математика
    дмитрий шевченко, Ну тоже самое, только кусочно заданное, чтобы быть непрерывным.

    (k-1/2)pi < x < (k+1/2)pi: sinx*sgn(cos x) + 2k + C

    x = (k-1/2)pi: 2k-1
  • Как отсортировать произвольные точки так, чтобы при проведении линии через них последовательно получился многоугольник?

    wataru
    @wataru
    Adamos, Векторные умножения будут чуть-чуть медленнее в сравнении и сильно быстрее в преподготовке. Но главное их достоинство - если входные координаты целые, то все можно сделать в целых числах и не парить мозг насчет точности. Плюс не надо выделять память и хранить угол вместе с точками.
  • Как отсортировать произвольные точки так, чтобы при проведении линии через них последовательно получился многоугольник?

    wataru
    @wataru
    Удобнее сортировать относительно крайней точки (например - самой левой из самых нижних). Тогда все точки лежат в одной полуплоскости и тогда не надо городить тригонометрию, чтобы получать углы - точки можно сравнивать векторным произведением.
  • Будет ли std::swap(vector[0], vector[1]) быстрее, чем vector[1] = vector[0]?

    wataru
    @wataru Куратор тега C++
    Евгений Шатунов, я почему-то подумал, что элементы - это вектора. Иначе откуда вообще может вопрос возникнуть.
  • Как разбить объявление класса и его реализацию?

    wataru
    @wataru Куратор тега C++
    Что за ошибку то компилятор выдает?

    И зачем вам класс B делать вложенным шаблоном, если вы его только с типом T используете?
  • Как использовать Сверхмассивные массивы в Си++ чтобы получить обыкновенные числа?

    wataru
    @wataru Куратор тега C++
    Это какой-то сверхбред. Похоже над вами подшутили, или у профессора шизофрения.
  • Как передать list в функцию c++?

    wataru
    @wataru Куратор тега C++
    comandante_ss, так list, или list<int>? Одно из двух точно неправильно,