ООП C++ для процедурной памяти и аномалии времени в Leetcode [закрыто]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 ООП C++ для процедурной памяти и аномалии времени в Leetcode [закрыто]

Сообщение Anonymous »


Я пытался задать этот вопрос по лит-коду, когда столкнулся с ошибкой «Превышен лимит памяти». Я нашел в списке решений более оптимальное решение и попытался понять, что у них получается лучше. Я уменьшил разницу во времени выполнения наших кодов, имеющих функции-члены, и процедурные функции. Разница огромна; процедурная реализация, кажется, работает намного быстрее и потребляет гораздо меньше памяти. Я не уверен, почему это произошло, поскольку функции-члены не особо потребляют память на экземпляр класса. Более того, остальная часть кода точно такая же. Я разместил фрагменты ниже:

Моя OO-версия с (намного) более высоким временем выполнения и потреблением памяти:

int maxxor = 0; класс Трие{ публика: Три* ptrs[2]; Трие(){ птрс[0] = НОЛЬ; ptrs[1] = NULL; } недействительная вставка (интервал n) { Попробуйте * t = это; набор бит б(п); внутренний индекс; for(int j=31;j>-1;j--){ индекс = (b[j] != 0)?1:0; если (т->ptrs[индекс]==NULL){ t->ptrs[index] = новый Trie; } т = т->ptrs[индекс]; } возвращаться; } int findpartner(int n){ Trie* t = это; набор бит b(n),ans(0); индекс int, пиндекс; for(int j=31;j>-1;j--){ индекс = (b[j] != 0)?1:0; пиндекс = 1-индекс; //индекс партнера: 1- мой индекс if(t->ptrs[pindex]!=NULL){ ан[j] = 1; } еще{ pindex = 1-pindex;//проверяем другой индекс, но xor в этом бите равен нулю. } т = т->ptrs[пиндекс]; // if((((long long)1)ptrs[индекс]==NULL){ t->ptrs[index] = новый Trie; } т = т->ptrs[индекс]; } возвращаться; } int findpartner(int n, Trie* t){ набор бит b(n),ans(0); индекс int, пиндекс; for(int j=31;j>-1;j--){ индекс = (b[j] != 0)?1:0; пиндекс = 1-индекс; //индекс партнера: 1- мой индекс if(t->ptrs[pindex]!=NULL){ ан[j] = 1; } еще{ pindex = 1-pindex;//проверяем другой индекс, но xor в этом бите равен нулю. } т = т->ptrs[пиндекс]; // if((((long long)1)
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»