允许n维坐标的有效方法?

时间:2013-11-13 14:34:16

标签: c++ arrays vector struct random-walk

我目前正在构建一个计算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 ++编程。

2 个答案:

答案 0 :(得分:3)

如果在编译时知道n,您可以使用std::array<long,n>来表示某个职位。

如果在运行时才知道nstd::vector<long>将是一个不错的选择。

答案 1 :(得分:2)

我使用矢量作为坐标,并设置位置:

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

然后,您将能够动态选择n并更快地搜索位置。