包含结构的向量的向量

Vector of Vectors Containing Structs

本文关键字:向量 结构 包含      更新时间:2023-10-16

我定义了一个结构

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() 成员函数收效甚微

回复:1

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

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

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

回复: 2

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

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

其中spaceStation[level]返回索引 level 处的向量,然后获取位置 pathindex 处的元素(这是结构的一个实例),最后修改该结构中的值。

对于 Q1,你是对的。例如:4x4 维度向量。

vector> vec(4, vector(4));

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

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

然后你可以做:

空间站[2][3].访问以访问结构内部的元素。