Я инициализирую очень большой массив с тысячами установленных значений. Я хотел бы, чтобы эти значения устанавливались во время компиляции, а не во время выполнения, поскольку они фиксированы и не изменятся.
Есть ли способ автоматически генерировать эти значения, возможно, используя препроцессор? В настоящее время я генерирую эти значения с помощью другой маленькой программы, затем просто копирую и вставляю значения соответственно.
Вот что я генерирую:
class MyClass
{
public:
MyClass(int x, int y, int z) : X(x), Y(y), Z(z) {}
int X, Y, Z;
};
std::vector<MyClass> my_vector{
#include "my_vector_default_values.h"
};
my_vector_default_values.h
MyClass(0, 0, 1),
MyClass(0, 0, 2),
MyClass(0, 0, 3),
MyClass(0, 0, 4),
// etc... for thousands of lines
// ...
Изменить:
Фактические значения, которые я генерирую, генерируются следующим образом (это программа на C #):
var sb = new StringBuilder();
var sizeX = 32;
var sizeY = 32;
var sizeZ = 32;
for (var x = 0; x < sizeX; x++)
{
for (var y = 0; y < sizeY; y++)
{
for (var z = 0; z < sizeZ; z++)
{
sb.AppendLine($"MyClass({x}, {y}, {z}),");
}
}
}
var s = sb.ToString();