git config core.fileMode false
. int
очень плохо подходит. Для этих целей в стандартной библиотеке есть тип size_t
[?].template< typename TValue >
class Array final
{
private:
TValue* m_memory = nullptr;
size_t m_length = 0;
};
default
там где это можно.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 ];
}
int
и double
?По значению?
Каждый раз будет копирование?
O'k возьмем код попроще
input.find(separator, i);
я просто не стал обозначать. Как и вопрос чрезмерного выделения памяти. Я только ответил человеку относительно length
внутри цикла. То есть оно вызовется только один раз независимо от количества циклов?
length
будет вызван только один раз для неизменяемой строки.length
на каждой итерации - это не проблема для производительности. Метод просто возвращает значение поля длины строки. Никаких подсчетов фактической длины при этом не производится. Об этом и говорит сложность O(1) для этого метода. У меня вопрос по поводу вызова .length(); внутри цикла.
string Name;
- как по-твоему это поле запишется в файл? Опиши ожидаемый тобой механизм, которым строка должна записаться в файл.In.write((char*)&a, sizeof(AutoBase));
- в файл ты пишешь блок памяти. Как по-твоему происходит процесс записи в файл блока памяти? Предполагается что в дальнейшем будут храниться структуры данных в виде словарей, в которых ключом является число - длина строк, а значением массив строк такой длинны.
И почему здесь в комментариях обращаешься ко мне, а не к Сергей Кузнецов? :)
Я ведь ничего тут кроме уточнений не написал.
Выхода у тебя два, в зависимости от твоего ответа на мой комментарий под вопросом. Если коммит у тебя локальный - просто удали его так, как советует Сергей Кузнецов.
Если коммит у тебя ушел в удаленный репозиторий, сделай откат изменений по этому коммиту любым удобным из десятков способов.