Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (11)

Наибольший вклад в теги

Все теги (54)

Лучшие ответы пользователя

Все ответы (90)
  • Где найти интересные задачи по с++ разного уровня?

    bogolt
    @bogolt
    Не знаю что такое "озов" похоже на город какой-то, но тогда неясно отчего с маленькой буквы. Говорят в древности на Руси алфавит ( ну или буквица ) начинался с буквы Аз, откуда вероятно и пошли азы...

    По сути вопроса - любая программа длиннее тысячи строк будет представлять собой вполне себе задачу среднего уровня. Поставьте себе задачу и реализуйте ее на си++. Например напишите свой http/ftp сервер или клиент. Создайте простую игру, или удобное приложение.

    Можно конечно искать задачи где нужно "с помощью указателей" сделать что-либо, или "написать иерархию классов с виртуальными функциями" но имхо это полная ерунда. Она может помочь разве что закрепить синтаксис языка, но не дает понимания того зачем конкретная фича языка нужна.
    А вот создание собственной объемной программы - такое понимание дает в полной мере. Когда вы напишите 20й класс похожий на остальные, то зададитесь вопросом как это можно сделать проще, перечитаете учебник языка и поймете зачем нужны например шаблоны или виртуальные функции.
    Если до написания программы ( а лучше во время ) вы будете штудировать учебник языка - будет совсем хорошо.
    Ответ написан
  • Для чего нужны побитовые операции?

    bogolt
    @bogolt
    Они нужны для:
    • Реализации криптографических алгоритмов
    • Реализации любых других алгоритмов требующих работу с битами
    • Чтобы пользователи языка не изобретали велосипеды


    Понимаете, это ведь не особенность языка - это скорее особенность наших процессоров,принципов вычислений, ассемблера. Раз уж эти операции существуют, причем именно в том виде в каком к ним привыкли то логично предположить что многие программы и алгоритмы рассчитывают на их наличие в инструментарии разработчика. Представьте что вам пришлось бы портировать некий криптографический алгоритм использующий эти операторы на js в котором их не было бы. Допустим вы реализуете его умножая/деля на два, но затем обнаруживаете, что при умножении старший бит у вас исчезает, а должен становится самый младшим. Кроме того ваша реализация на js была бы много медленней чем встроенная в язык реализация.
    Ответ написан
  • Стоит ли использовать малоизвестные технологии при разработке, чтобы "привязать" к себе заказчика?

    bogolt
    @bogolt
    Еще один минус - работая по вашей схеме - заказчики которые не могут отказаться от исполнителя вы в конце начнете скатываться в лень, скуку, необоснованно завышенные потребности при полном нежелании ради них напрягаться. Так как клиент есть, никуда не денется, а значит можно себе позволить что угодно.
    В финале - у клиента заканчиваются деньги или проект, и вы остаетесь со своими амбициями, без знаний актуальных на рынке языков, с опытом работы в никому не нужной среде/языке, и главное уже привыкли что вам все дают за красивые глаза. В результате только себя самого и подставили.
    Ответ написан
  • Что использовать при разработке графического редактора на С++/Qt?

    bogolt
    @bogolt
    По-моему Qt хороший выбор для подобной программы. И не думаю, что вам имеет смысл отказываться от QGraphicsScene только потому что иначе задача вам кажется слишком простой. Я скорее предположу, что на каком-то этапе работы возможностей QGraphicsScene может не хватить для поставленных задач ( я однажды столкнулся с подобной проблемой, у ее дедушки в Qt3 ), и вот тогда действительно придется весь код писать ручками. Но изобретать себе работу, отказываясь от уже существующих классов - имхо неправильно.
    Поймите меня правильно - научится создавать подобные классы самому - полезное умение. Но если вы вначале научитесь использовать существующие, то затем, когда решитесь создать нечто свое уже будете обладать опытом использования этих классов, а так же примерным пониманием того что в них хорошо, а что не очень.
    На мой взгляд выбранная вами задача не настолько простая как может показаться, хотя это конечно сильно зависит от количества фич которые вы хотите реализовать. Но тем не менее я бы предположил вам вначале создать работающую программу, реализовав таким образом свою цель, а уже потом если сохранится желание переписывать внутренности на собственные графические контейнеры.
    Ответ написан
  • Как сделать так, чтобы std::set при добавлении объектов сравнивал на повторяемость по моим правилам?

    bogolt
    @bogolt
    Указать ваш компаратор:

    std::set<std::shared_ptr<CString>, MyCompare>
    Который будет сравнивать значения внутри умных указателей.

    Чтобы с пониманием делать такие вещи нужен опыт и некоторые навыки чтения литературы.

    upd:
    using namespace std;
    typedef shared_ptr<string> SString;
    
    class SharedLess
    {
    public:
        bool operator() (const SString& a, const SString& b) const
        {
            return *a < *b;
        }
    };
    Ответ написан