• Как изучить C++?

    Stalker_RED
    @Stalker_RED
    ffa11c5561b6ca472680216ac54dbccb.jpg

    Начните лучше с какого-нибудь дружелюбного языка, вроде паскаля или пайтона (только не с js, с него потом сложно переучиваться). И только после того как напишете десяток hello world, калькуляторов, астрологических календарей или тудушек - переключайтесь на плюсы. Плюсы вообще клевые, много узнаете о внутрянке, но начинасть с них тяжело.
    Ответ написан
    1 комментарий
  • Лучшие источники для изучения CPP?

    Andrey2008
    @Andrey2008
    DevRel в PVS-Studio
    Лекции по новшествам в C++ от PVS-Studio: https://youtube.com/playlist?list=PLmGioT8z4uobADC...
    Ответ написан
    Комментировать
  • Как перейти с Python на C++? или С чего начать изучение C++?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Как можно перейти с python на c++ в моем случае(насколько это возможно)?

    Просто берёшь и учишь C++

    Какие бесплатные ресурсы посоветуете мне для изучения C++?

    Самое лучшее - учебники по C++

    Как забыть все что я писал на python-е?"

    Зачем? Чем больше знаешь, тем лучше. Любой мидл знает два-три языка.
    Ответ написан
    Комментировать
  • Указатель или Индекс элемента?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Потому что работа с указателями более гибкая, чем использование индексов массива. Указатели - это одна из фишек языка С, если ее не понимать - будет очень сложно на нем писать.
    Ответ написан
    3 комментария
  • Какую архитектуру подобрать для данной задачи?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    workflow или state machine. Хотя они очень похожи
    Ответ написан
    3 комментария
  • Вызов C++ функций в python?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Вызвать именно функцию в таком виде из Python не выйдет. Но можно запустить запустить исполняемый файл с помощью модуля subprocess. Примеры есть как в документации, так и на этом ресурсе, вопрос задаётся уже не в первый раз.
    Ответ написан
    Комментировать
  • Почему все чаще пользователи отвечают в комментах к вопросу?

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

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    почему при указывании 3 элемента, он начинает считать с 1
    Кто вам такое сказал? Элементы массива в C++ всегда нумеруются начиная с нуля.
    Предупреждение для того и даётся, чтобы вы исправили код. Иначе во время работы программы могут быть самые неожиданные эффекты, начиная от некорректных вычислений и заканчивая вылетом программы из-за исключения при попытке доступа к чужой памяти.
    Ответ написан
    Комментировать
  • Почему в данной ситуации map быстрее unordered_map?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    unordered_map может работать за линию в худшем случае. Это если происходит много коллизий. Стандартная реализация еще и дико медленная, через связные списки работает и часто использует тривиальные хеши (буквально, значение int берется за значение хеша). Подобрать смертельный тест для такого хэша совсем не сложно. Введите вашей программе на вход координаты деревьев i*8192 - если я правильно понимаю, unordered_map будет работать ооочень долго.

    Можно избавиться от таких тривиальных коллизий, если реализовать свою хеш функцию. А там можно хоть (x * 239017l) % (1<<31) возвращать. И то, лучше будет.

    Еще, чтобы избавиться от постоянных рехешированний можно добавить вот это:
    len.reserve(1048576);
    len.max_load_factor(0.25);


    Говорят, что если заранее зарезервировать место и указать load_factor поменьше, то unordered_map будет раз в 10 быстрее.

    Плюс, константа у unorderd_map выше - ибо надо хеши считать и перехешировать всю таблицу, если чисел становится много. Может, оно бы было быстрее для миллиона чисел, а не 100000, как у вас там.
    Ответ написан
    1 комментарий
  • Как довести данный код до конца?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Потому что вы делаете pop_back на пустом векторе.
    P.S.
    А когда-то для этих целей хватало одной целочисленной переменной. Теперь, смотрю, векторы используют. Скоро, наверное, bigdata и искусственный интеллект подтянут...
    Ответ написан
  • Как настроить сетевой сокет в linux?

    gbg
    @gbg Куратор тега Linux
    Любые ответы на любые вопросы
    Почитать учебник Снейдера по TCP/IP.
    В частности, то место, где написано, что read (write) может считать меньше байт, чем у нее указано в качестве параметра.
    Ответ написан
  • Как следить за знаком переменной при переполнении в C++?

    xorknown
    @xorknown
    Будут проблемы - решайте
    У вас неправильный подход. Если взять абстрактную машину, то нельзя следить за знаком переменной, так как стандарт не гарантирует, что он изменится. Вам вообще по факту переполнять нельзя.
    Вам надо определить это до самого переполнения. Самый тупой способ - вычесть из максимального числа один из аргументов и сравнить полученное число со вторым аргументом(если полученное число меньше, то значит переполнение).
    Ответ написан
    Комментировать
  • Вопрос о использовании mutex и lock_guard?

    @res2001
    Developer, ex-admin
    И получается участок кода(с создания переменной и до вызова диструктора) код будет выполняться только одним потоком?

    Как напишете, так и будет выполнятся.
    По моему не зачем зашивать lock_guard в структуру/класс, он должен быть в функции/методе тут же создаваться и удаляться максимально быстро. Если это приведет к дополнительному коду - это небольшая расплата за потокобезопасность.
    Ответ написан
    Комментировать
  • Что такое буфер ввода/вывода?

    Для ввода-вывода в консоль или файл программа делает системные вызовы чтения или записи. Не вдаваясь в подробности, скажу, что они дорогие. Если ты читаешь по одному символу из std::cin, то это будет работать жутко медленно.

    Что происходит на практике: происходит один системный вызов, cin читает в свой внутренний буфер сразу, скажем, 4096 байт, и потом отдаёт тебе из буфера по одному символу, которые ты у него запрашиваешь. Нетрудно заметить, что работать это будет (в моём примере) где-то в 4096 раз быстрее.

    Зачем очищать. Пока ты не сделал flush, то, что ты вывел в поток, находится в буфере. cout ждёт, пока ты докинешь ему ещё байтиков, чтобы вывести всё потом большим куском. Если же ты хочешь, чтобы вывод произошёл прямо сейчас, то нужен flush.
    Ответ написан
    Комментировать
  • Передача данных отдельным блоком?

    Adamos
    @Adamos
    Основная проблема в том, чтобы не использовать при этом структуру или класс. Так как передача происходит лишь в одном фрагменте огромного кода, громоздить что-то из этого не хочется.

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

    DevMan
    @DevMan
    хайлоад – это набор техник/технологий/подходов, не особо зависящих от конкретного языка.
    а не конкретно "пилим вот так на плюсах".
    Ответ написан
    Комментировать
  • Поддерживает ли c++17 фичи c++11?

    gbg
    @gbg Куратор тега C++
    Любые ответы на любые вопросы
    Обратная совместимость есть, но некоторые тонкости могут оказаться deprecated
    Ответ написан
    7 комментариев
  • Почему выдает ошибку C2664?

    Adamos
    @Adamos
    Если в функции последней буквой А - она ожидает в качестве аргументов char*.
    Если же W - то ей нужен wchar_t*.
    Так что вместо string вам нужно использовать wstring.
    Ответ написан
    4 комментария
  • Балансировка бинарного дерева, в чём ошибка?

    Написано, что неопределенная ссылка на main. Где функция main?
    Ответ написан
    5 комментариев
  • Как получить доступ к наследованной переменной из функции базового класса?

    xorknown
    @xorknown
    Будут проблемы - решайте
    Не уверен, что вы код написали верно. Но чтобы просто получить доступ к переменной имя которой вы скрыли,
    достаточно просто написать имя базового класса::переменная(Base::myvar).
    Вопрос в другом, нужна ли вам переменная myvar в Another?
    UPD: неправильно прочитал.
    Инициализируйте переменную myvar в наследуемом классе. В Another у вас совсем другая переменная которая никак не относится к myvar base, просто уберите ее.
    Если вы хотите инициализировать myvar в конструкторе то вам надо завести конструктор base принимающий аргумент
    class Base {
    protected:
       int myvar;
       void useBaseVar(){
         cout << myvar << endl; // вывод 42
       }
    public:
       Base() : myvar(10) {}
       Base(int  val) : myvar(val) {}
       ~Base() {}
    };
    
    
    class Another : public Base {
    public:
       Another() : Base(42) {}
       void useMyVar() {
         useBaseVar();
       }
    };
    Ответ написан
    3 комментария