Я пытаюсь сделать код сортировки слиянием в C ++, и чтобы избежать большого использования памяти, я хочу объявить вспомогательный вектор как глобальную переменную.Как вы, возможно, знаете, при использовании стратегии глобальных переменных используется пространство O (1) , а при использовании другого - O (N logN) * 1004 *.Но есть небольшая проблема, я не знаю размера векторов, которые будут использоваться для тестирования моего кода, поэтому мне нужно, чтобы эта глобальная переменная была динамически распределена.
Я уже пытался что-то сделатьвот так:
Это из архива .h:
void mymergesort_recursive(std::vector<int> &v, SortStats &stats, int i = 0,
int f = 0, bool nouveau = true);
int *aux = nullptr;
Это из архива .cpp:
void mymergesort_recursive(std::vector<int> &v, SortStats &stats, int i,
int f, bool nouveau) {
if (nouveau) {
stats.recursive_calls = 1;
f = int(v.size());
// Allocates the variable aux according with the vector size. This makes a lot of memory economy.
aux = new int[f];
} else {
...
}
...
}
Собственно, я пробовал этотоже:
aux = (int *)malloc(f * sizeof(int));
aux = static cast <int*>(malloc(f * sizeof(int)));
И другие возможности проб и ошибок, которые привели к одной и той же ошибке: - (
множественное определение `aux '
Я искал некоторые другие вопросы на этом форуме здесь, но, несмотря на множество подобных вопросов, я не смог найти решение именно этой проблемы.
Я думаю, что объяснилпроблема ясна, но если что-то неясно, пожалуйста, спросите.