0

我已经定义了一个结构

struct path{
    char type;
    bool visit;
    bool inPath;
    int level;
}

我还定义了这种结构的向量向量

vector < vector<path> > spaceStation(numLevels*levelSize,vector<path> (levelSize));

我有两个问题。

1)我是否定义了向量,以便行数与 (numLevels*levelSize) 相关,列数与 levelSize 相关

2)当访问向量的各个元素时,如何在其中设置结构的元素。我尝试使用 .at() 成员函数但收效甚微

4

2 回答 2

1

回复:1

是的。但我不禁觉得你想这样做:

vector < vector<path> > spaceStation(numLevels,vector<path> (levelSize))

请注意,使用术语“行”和“列”完全是在您的想象中,与向量有关。你只是在另一个向量中有一个向量。它就像一个数组数组 - 没有暗示特殊的几何形状。

回复:2

因为你有一个向量的向量,你需要使用两个索引,而不仅仅是一个:

spaceStation[level][pathindex].visit = true;

WherespaceStation[level]返回 index 处的向量level,然后您在 position 处获取元素pathindex(这是您的结构的一个实例),最后修改该结构中的值。

于 2013-09-27T02:25:54.587 回答
0

对于 Q1,您是正确的。 例如:一个 4x4 维度的向量。

矢量<矢量<整数>>矢量(4,矢量(4));

对于 Q2,要访问路径,您不能执行以下操作:

例如,spaceStation[2][3] 访问第 2 行第 3 列数据。

然后你可以这样做:

spaceStation[2][3].visit 访问结构内的元素。

于 2013-09-27T02:29:50.340 回答