У меня есть функция, которая предназначена для выполнения рекурсивных вычислений. Если моя функция запрограммирована рекурсивно, вычисление занимает слишком много времени. Поэтому я выполняю запоминание, сохраняя промежуточные результаты в массиве.
Во время выполнения моей программы я мог бы вызвать функцию с параметрами (10,0)
, (5,5)
, (2,4)
и т. Д. Поэтому у меня есть функция setup(double x)
, которая заполняет весь массив правильными значениями. Затем я могу получить доступ к любому из значений массива без каких-либо дальнейших расчетов. Я только жду, пока x
изменится на вызов setup()
снова.
Мне интересно, как я могу реализовать это в C ++. Мне не имеет смысла использовать класс, так как мне никогда не понадобится создавать связанный объект. Я прекрасно реализовал функции в пространстве имен, но у меня все еще есть проблема. Даже если я использую безымянное пространство имен, массив, используемый моей функцией, виден и может быть изменен вне пространства имен функции. Если я включу заголовочный файл пространства имен, то есть.
мой код:
FunctionWrapper.h
namespace FunctionWrapper{
namespace{
double tempArray[10][10];
}
void setup(double x);
void getValues(int n);
}
main.cpp
#include "FunctionWrapper.h"
int main(){
FunctionWrapper::tempArray[0][0] = 5; //Works
}