Задать вопрос
  • C++11, C++14. Использование auto - признак дурного тона?

    @Mace_UA
    Нет, это не признак дурного тона. Auto -- замечательная фича, позволяющая сделать код более читабельным. Но, как и практически любая хорошая фича C++, она может сделать вам только хуже, если применять её без надобности там, где она не нужна. Поэтому поддерживаю уже высказанное здесь мнение
    если вы без указания типа и так УЖЕ ИМЕЕТЕ достаточно информации, чтобы уверенно работать со значением - тогда можно использовать auto. Если чувствуете, что не имеете, или сомневаетесь, что имеете - лучше тип указать.


    При объявлениях функций auto в качестве типа возвращаемого значения вы так просто не напишете. Это должны быть инлайн функции. Как правило, такая потребность может встретиться разве что при написании шаблонов, которые реализуются прямо в хедере и для методов в которых порой вывести тип возвращаемого значения без auto крайне тяжело. Если вы школьник и не так давно программируете, на ближайшее время вообще забудьте про такую возможность. Она вам не нужна. А для разработчиков всяких хитроумных шаблонных библиотек это может быть очень даже полезной фичей.

    И ещё один аргумент за использование auto при определении переменных. Большинство современных IDE нормально справляются с тем, чтобы сообщить вам тип переменной, когда вы просто наводите мышкой на её имя, даже если она объявлена как auto. Это во многих случаях смягчает негативные стороны использования auto, если таковые вообще имели место в данном куске кода.

    А для более "продвинутых" программистов рекомендую к прочтению вот эту статью Герба Саттера. Всё прекрасно разложил по полочкам насчёт использования auto и объяснил, почему это в большинстве случаев не так страшно, как некоторым кажется на первый взгляд. Конечно, предложенная в конце идиома "almost always auto" спорная, C++ это всё-таки не джаваскрипт. Но остальное написано очень разумно.
    Ответ написан
    Комментировать
  • C++11, C++14. Использование auto - признак дурного тона?

    auto в заголовке функции - дурной тон.
    В объявлении переменной - стандартная практика.
    Ответ написан
    Комментировать
  • Как "отладку" переключить на "выпуск" в Visual Studio 2015?

    @vilgeforce
    Раздолбай и программист
    Вы сами-то на свой скрин смотрели? В верхнем левом углу явственно видно поле со значением DEBUG. Что бы это значило, а?
    Ответ написан
    3 комментария
  • Чем занять простаивающий сервер?

    mausspb
    @mausspb
    web разработчик, системный администратор
    Какой канал ? С какими точками обмена соединен провайдер ? В каком городе?
    Можно vpn продавать
    Ответ написан
    2 комментария
  • Как поддерживать ссылочную целостность в SQLite?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    SQLite не СУБД,
    потому обрабатывать нужно как и в СУБД без поддержки целостности - на стороне прилложения
    Ответ написан
    4 комментария
  • Как организовать файловое хранилище?

    MaxDukov
    @MaxDukov
    впишусь в проект как SRE/DevOps.
    посмотрите на какой-нибудь NAS. судя по всему Вам этого "за глаза"
    Ответ написан
    3 комментария
  • Верстать без фреймвороков это значит быть не професионалом?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    Быть профессионалом - значит знать и правильно применять необходимые инструменты для наиболее эффективного решения задачи. А также НЕ применять, если в этом нет необходимости.
    Ответ написан
    4 комментария
  • Как ускорить UPDATE MySQL на 100к строк?

    BuriK666
    @BuriK666
    Компьютерный псих
    Делайте update не по одной записи, а пачками с помощью транзакций. например по 1000 шутк.
    Будет заметно быстрее.
    Ответ написан
    Комментировать
  • Event - это value или reference type в C#?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    event так относится к экземпляру делегата ( Станислав Макаров : мультикаст ), как property относится к значению поля.

    event - это синтаксический сахар, обертка для методов add и remove, как property является оберткой к методам get и set.

    Таким образом, вопрос некорректен, поскольку event не тип.
    Ответ написан
    6 комментариев
  • Что делать после изучения С++?

    @s0L
    9648456309884dd781e5f1c35c06bd74.jpg
    Нельзя просто так взять и закончить изучение С++
    Ответ написан
    1 комментарий
  • Почему не получается отделить методы шаблонного класса?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Выше вам уже ответили. От себя дополню, что если хочется куда-то "вынести" реализацию методов (а в некоторых случаях приходится это сделать), то можно создать файл с расширением tcc и подключить его в заголовочник, но снизу.
    Ответ написан
    2 комментария
  • Почему не получается отделить методы шаблонного класса?

    gbg
    @gbg Куратор тега C++
    Любые ответы на любые вопросы
    Тела шаблонных методов должны находится в *.h
    Ответ написан
    2 комментария
  • C# консольное приложение, сохранить состояние перед закрытием как?

    @kttotto
    пофиг на чем писать
    Я бы добавил Setting файл (ссылку на работу с файлом параметров Вам постом выше оставили), в который добавил бы необходимые параметры для запуска приложения. При начале работы приложения брал бы данные от туда. Когда эти параметры будут меняться в процессе работы, их сохранять в этом файле. И каким бы образом приложение ни закрылось, текущее состояние будет сохранено в сеттинге.
    Ответ написан
    Комментировать
  • Как работать с окнами в WPF/MVVM?

    xakpc
    @xakpc
    full-stack .net developer, CEO Leecero.com
    в MVVM-паттерне нету никаких соглашений о навигации. Тема сама по себе это сложная,
    рекомендую посмотреть как это сделано в Prism
    habrahabr.ru/post/178009
    оригинал
    https://msdn.microsoft.com/en-us/library/gg430861(...

    Обычно все строится на основе некоторого INavigationService который показывает по переданной VM необходимый View, хранит backstack и т.п.
    Ответ написан
    2 комментария
  • Полиморфизм и итерация по пользовательских контейнерах. Начнем?

    @MiiNiPaa
    1) Унаследовались от std::iterator вы неверно. Второй параметр это тип который должен получится после разыменования. Если оператор * возвращает Т, то ставьте Т параметром.

    2)
    MyIterator подтягивает из std::iterator определенные в нем операторы (* и ->),
    Какие определённые операторы? std::iterator определяет несколько алиасов типов, вот и всё.

    Вам нужно:
    а) Хранить в итераторе указатель на ноду.
    б) Операторы ++ и -- переводят указатель на следующую/предыдущую ноду
    в) Операторы * и -> обращаются к данным в текущей ноде.

    Как-то так:

    template <typename T>
    struct Node
    {
        T data;
        Node* next;
        Node* prev;
    };
    
    template <typename T>
    class list_iterator : public std::iterator<std::bidirectional_iterator_tag, T> 
    {
        private:
        
        Node<T>* current;
        
        public:
        
        list_iterator& operator++()
        {
            current = current->next;
            return *this;
        }
        
        T& operator*()
        {
            return current->data;   
        }
    };
    Ответ написан
    2 комментария
  • Как сгенерировать код с++ из php?

    @mr_ko
    Javascript, Node.js. React.js, Vue.js, Wordpress
    А вот это не читали habrahabr.ru/post/252215 ?
    Ответ написан
    1 комментарий
  • Как держать одновременно две ветки в рабочей копии?

    @FoxInSox
    Никак, подобная проблема решается не git'ом, а например конфигурационными файлами. Грубо говоря, в проекте где-то должен быть файл описывающий как должен собираться проект:

    releaseConfig{
      useMockObjects = false
      ignoreNetwork = false
    }
    debugConfig{
      useMockObjects = true
      ignoreNetwork = true
    }

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

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Если вы уже знаете c++, то подумайте о UnrealEngine.
    Если вы хотите ещё освоить c#, то Unity3d - тоже прекрасный вариант.
    Xamarin - это платформа для разработки кросс-платформенных программ, пишется на c#. Обычно используется для не-игровых программ, а игровые лучше делать в юнити.
    Для игр попроще можно использовать платформы типа Marmalade или Corona, да даже GameMaker.
    Также может быть отличным решением делать программу на html+css+js с помощью Cordova.

    UnrealEngine и Unity3d примерно одинаковы по мощности, традиционно UnrealEngine имеет лучшую графику Unity3d, но язык c# в Unity3d удобнее и заметно проще, чем в UnrealEngine.

    Лично моё мнение - начните работать с Unity3d. Мощный, быстрый, имеет хорошее сообщество, быстро развивается. Плюс, c# - это плюс :)

    Насколько хорошо вы знаете программирование вообще и c++/c# в частности? Поищите здесь вопросы, с чего начать изучать языки.

    Какие движки/фрейворки я буду использовать в дальнейшем?
    А вот это вопрос к вам, а не к нам :)
    Ответ написан
    Комментировать
  • Области применения JS в современном IT?

    @nirvimel
    Кроме js вы пробовали только php, и этот горький опыт заставил вас остановить свой выбор на js? Не стоит на таком примере делать выводы обо всех других языках. В сфере профессионалов принято не подыскивать новые задачи под единственный известный язык, но, наоборот, подбирать (и изучать при необходимости) язык исходя из стоящих задач. Прежде чем останавливать свой выбор на каком-то конкретном языке или стеке технологий вам нужно сначала определиться с тем кругом задач, о области которых вам интересно работать, и потом подходить к выбору инструментов для решения этих задач. Все зависит от того что вас интересует: web-разработка, фронтэнд, бекэнд, десктопные приложения или мобильные, разработка игр, больше/меньше заниматься пользовательским интерфейсом, может быть, системное программирования?
    Ответ написан
    7 комментариев
  • В чем разница объявления (указатели и переменные)?

    @MiiNiPaa
    1) Создаётся одна переменная типа int в автоматической памяти с именем i. Значение i не определено.
    2) Синтаксическая ошибка, возможно вы имели в виду int* i;? В таком случае создаётся переменная типа int* в автоматической памяти с именем i. Значение i не определено.
    3) Синтаксическая ошибка, возможно вы имели в виду int* i = new int;? таком случае создаётся переменная типа int* в автоматической памяти с именем i. Затем создаётся переменная типа int в динамической памяти, и i присваивается адрес этой свежесозданной переменной.
    4) Синтаксическая ошибка. Понятия не имею что подразумевалось.
    Ответ написан
    Комментировать