Эффективный способ учесть n-мерную координату?

В настоящее время я создаю программу, которая будет вычислять обход избегающих себя в n-измерениях.
Программа должна иметь список координат, которые она посещала ранее.
Для известного максимального числа измерений я бы просто сделал вектор структуры позиции такой:

struct Position
{
long int x;
long int y;
long int z;
long int w;
etc...
}

std::vector<Position> history;
Position currentSite;

Но когда я программирую для n-мерной позиции, я не уверен, как это сделать, не создавая массив размером n * walk_length.

Есть ли более «правильный» способ сделать это?

Примечание: я программирую на C ++.

0

Решение

Я бы использовал вектор для координат и установил для позиций:

typedef std:vector<long> Position;
typedef std::set<Position> VisitedPositions;

Тогда вы сможете выбирать n динамически и быстрее искать позиции.

2

Другие решения

Если n известен во время компиляции, вы можете использовать std::array<long,n> представлять позицию.

Если n не известно до времени выполнения, std::vector<long> будет хорошим выбором.

3

По вопросам рекламы [email protected]