Задать вопрос
  • Как откатить права к файлам в git?

    yellow_pus, а почему ты игнорируешь мой комментарий прямо под своим вопросом?
    И почему здесь в комментариях обращаешься ко мне, а не к Сергей Кузнецов? :)
    Я ведь ничего тут кроме уточнений не написал.

    Выхода у тебя два, в зависимости от твоего ответа на мой комментарий под вопросом. Если коммит у тебя локальный - просто удали его так, как советует Сергей Кузнецов.
    Если коммит у тебя ушел в удаленный репозиторий, сделай откат изменений по этому коммиту любым удобным из десятков способов.
  • Как откатить права к файлам в git?

    Сергей Кузнецов, не стоит утверждать того, что имел в виду скорее всего, или не скорее всего, автор или просто другой человек.
    У тебя ответ все равно не отвечает на вопрос. В чем-то он верен, но не в решении вопроса.
    Не думай за других, спрашивай других. Разбираться стоит в их ответах на твои вопросы, а не в своих подозрениях.

    С другой стороны, автор похоже не заинтересован в коммуникациях и решении своей проблемы. На вопросы он отвечать не стремится совсем.
  • Как откатить права к файлам в git?

    Сергей Кузнецов , гит хранит права к файлам. По умолчанию хранит. Эту функцию, чтобы не хранил, надо принудительно отключать через git config core.fileMode false.
  • Как откатить права к файлам в git?

    yellow_pus , коммит у тебя локальный или уже в наружу ушел?
  • Как правильно освобождать память?

    @MarkusD Куратор тега C++
    calculator212, у тебя довольно хорошо получается решать проблему. Давай я только немного подправлю твои действия.

    Для размерных величин int очень плохо подходит. Для этих целей в стандартной библиотеке есть тип size_t[?].
    Дополнительно, стандарт C++11 позволяет нам сегодня использовать инициализацию полей по месту их определения. Этими вещами полезно пользоваться.
    Определение состояния
    template< typename TValue >
    class Array final
    {
    private:
        TValue* m_memory    = nullptr;
        size_t  m_length    = 0;
    };


    При таком определении полей код инициализации можно изрядно сократить используя default там где это можно.
    C++11 вводит термин перемещения ресурса. Поэтому правило теперь называется не "Правило 3", а правило "3/5/0".
    Следуя правилу 3/5/0
    public:
        inline Array()  = default;
        inline ~Array() { delete[] m_memory; };
        
        explicit inline Array( const size_t length );
        
        inline Array( const Array& other );
        inline Array( Array&& other );
        
        inline Array& operator = ( const Array& other );
        inline Array& operator = ( Array&& other );


    Логика копирования должна быть какой? У тебя массив, в нем данные. Массив копируется. Значит данные тоже надо скопировать.
    Обрати внимание на то, что конструктор копирования использует синтаксис делегирующего конструктора чтобы передать конструктору преобразования требуемую длину массива.
    Конструктор копирования
    template< typename TValue >
    inline Array<TValue>::Array( const Array<TValue>& other )
        : Array{ other.m_length }
    {
        for( size_t index = 0; index < m_length; ++m_length )
        {
            m_memory[ index ] = other.m_memory[ index ];
        }
    }


    Если конструктор копирования работает в создаваемом объекте, то оператор копирования работает только в уже созданном объекте. Т.е. в момент работы оператора копирования объект же находится в каком-то состоянии. И это состояние нужно правильно завершить, согласно логике работы твоего шаблона.
    Оператор копирования
    template< typename TValue >
    inline Array<TValue>& Array<TValue>::operator=( const Array<TValue>& other )
    {
        if( m_length != other.m_length )
        {
            delete[] m_memory;
            m_length = other.m_length;
            m_memory = new TValue[ m_length ];
        }
        
        for( size_t index = 0; index < m_length; ++m_length )
        {
            m_memory[ index ] = other.m_memory[ index ];
        }
        return *this;
    }


    Термин перемещения означает буквально перенос состояния из одного объекта в другой. И если копирование приводит к повторному выделению памяти в твоем шаблоне, то перемещение уже не должно.
    В этом и суть перемещения.
    Перемещение
    template< typename TValue >
    inline Array<TValue>::Array( Array<TValue>&& other )
        : m_memory{ std::exchange( other.m_memory, nullptr ) }
        , m_length{ std::exchange( other.m_length, 0 ) }
    {
    }
    
    template< typename TValue >
    inline Array<TValue>& Array<TValue>::operator=( Array<TValue>&& other )
    {
        delete[] m_memory;
        m_memory = std::exchange( other.m_memory, nullptr );
        m_length = std::exchange( other.m_length, 0 );
        return *this;
    }


    Ну и на последок, еще осталось только конструктор преобразования определить.
    Конструктор преобразования
    template< typename TValue >
    inline Array<TValue>::Array( const size_t length )
        : m_length{ length }
    {
        if( m_length == 0 )
        {
            return;
        }
        
        m_memory = new TValue[ m_length ];
    }


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

    @MarkusD Куратор тега C++
    Pinkman, тебе стоит более точно сформулировать вопрос.
    Тебя интересуют именно все целочисленные и вещественные числа или тебя интересуют исключительно только int и double?

    Ты сейчас свой вопрос поставил так, как будто спрашиваешь разрешение решить задачу каким-то определенным образом.
    Но саму задачу ты не описал еще. Я предлагаю тебе описать в своем вопросе именно условия решаемой тобой задачи.
  • Как написать explode() на c++?

    @MarkusD Куратор тега C++
    RabraBabr,
    По значению?

    Да, по значению. А в чем сложность передать одно целочисленное значение в общем регистре ЦП?

    Каждый раз будет копирование?

    Копирование чего и куда?

    O'k возьмем код попроще

    Этот код при передаче в библиотеку будет выкинут и написан новый, уже без лишних выделений памяти и неподобающих инициализаций.
  • Как написать explode() на c++?

    @MarkusD Куратор тега C++
    Wataru, вопрос строки input.find(separator, i); я просто не стал обозначать. Как и вопрос чрезмерного выделения памяти. Я только ответил человеку относительно length внутри цикла.
  • Как написать explode() на c++?

    @MarkusD Куратор тега C++
    RabraBabr,
    То есть оно вызовется только один раз независимо от количества циклов?

    Ответ на этот вопрос лежит в области работы оптимизатора. Результат действительно может быть таким, что length будет вызван только один раз для неизменяемой строки.

    Но код в ответе написан настолько нехорошо, что я могу говорить только о том, что вызывать length на каждой итерации - это не проблема для производительности. Метод просто возвращает значение поля длины строки. Никаких подсчетов фактической длины при этом не производится. Об этом и говорит сложность O(1) для этого метода.
  • Как написать explode() на c++?

    @MarkusD Куратор тега C++
    Issue, рекомендую изучить этот ответ.
    Если примешь во внимание все написанное там, тебе станет проще решать подобные заданному вопросы.
  • Как написать explode() на c++?

    @MarkusD Куратор тега C++
    RabraBabr,
    У меня вопрос по поводу вызова .length(); внутри цикла.

    O(1). Никаких проблем не вызывает.
  • Как исправить ошибку "Нарушение прав доступа при записи по адресу"?

    @MarkusD Куратор тега C++
    Андрей Загородний , вопрос первый: исключение со скриншота показывается тебе не в консоль, а в отладчик на той строчке, на которой оно возникло. На какой строке у тебя возникает исключение?
    Вопрос второй: string Name; - как по-твоему это поле запишется в файл? Опиши ожидаемый тобой механизм, которым строка должна записаться в файл.
    Вопрос третий: In.write((char*)&a, sizeof(AutoBase)); - в файл ты пишешь блок памяти. Как по-твоему происходит процесс записи в файл блока памяти?
  • Как лучше оптимизировать такие действия с массивами?

    @MarkusD Куратор тега C++
    Soft_touch_plastic , я понимаю что ты с инструментом C++ еще только начинаешь знакомиться, однако хочу обратить твое внимание на другой, крайне важный, момент.
    Структура изложения твоего вопроса, точнее - ее отсутствие, говорит о том, что у тебя проблемы с подходом последовательного решения задач. Предложения плохо разделены, плохо стыкуются в единое повествование, перед каждым продолжением у тебя идет вставка или вперед по контексту, или назад. И все вместе выглядит как рваное и неструктурированное. Твой текст непонятен сразу, в него приходится вчитываться, приходится напрягаться чтобы тебя понять.
    Это выдает отсутствие у тебя навыков структурного изложения. Это говорит о том, что твой код, скорее всего, точно так же лишен структуры. И не важно на каком этот код языке, ведь у тебя не получается сложить структуру используя даже свой родной язык.

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

    И это провалит твою производительность. Бинарное дерево и вектора не позволят тебе быстро определять ошибку в слове.
    Для быстродействия тебе нужно изучить и применить расстояние Левенштейна, префиксные деревья и, как минимум, триграммы.

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

    @MarkusD Куратор тега C++
    ColdHandGuy, ясно, хорошо. Еще один вопрос. Я ведь правильно понимаю что тебе нужна визуализация подобного такому графа?
  • С помощью каких библиотек можно визуализировать граф?

    @MarkusD Куратор тега C++
    ColdHandGuy , насколько для тебя важна реализация на C++, а не на другом языке?
  • Как при трансляции осуществляется связывание кода?

    @MarkusD Куратор тега C++
    Dolarun, смотри. Благодаря тому что я использую упоминания, ты имеешь возможность видеть что тебе отвечают.
    Почему я должен заходить и перепроверять, не ответил ли ты мне? Тебе не нужны ответы на твои вопросы? Хорошо, без проблем. Сделаю вид что я сюда не заходил, не проверял, уведомлений об ответе не получал, а значит ты на мой уточняющий вопрос не отвечал по своим соображениям.
  • Как при трансляции осуществляется связывание кода?

    @MarkusD Куратор тега C++
    Dolarun , "A" и "B" - это статические библиотеки? Или динамические?
  • Почему при попытке сборки TinyXML2 выдает ошибку?

    fasmog , тебе стоит показать сценарий сборки своего проекта. Ошибка находится там.
  • Что со шрифтами при прокручивании страницы?

    Сергей Карбивничий , так а полноценное решение имеется или все авторы ограничились только заданием череды вопросов на одну тему?
  • Можно ли использовать TCP протокол для игрового сервера?

    ASMcoder-Source , вот ответ на твой вопрос.
    У тебя протокол не настроен просто. Тебе нужно отключить буферизацию и перевести сокеты в неблокирующий режим. При этом дискретизацию 8мс на клиентах ты все равно не получишь в виду накладных расходов TCP.

    Тебе нужно уметь интерполировать позицию персонажа по данным из сети.
    Но в плане коррекции больше ничего сказать не получится пока ты детально не расскажешь о своей сетевой механике. Какая у тебя локация, какой у тебя тип перемещения, какие именно данные ты пересылаешь и все подобное.