c++ - 包含结构的 vector 的 vector

标签 c++ vector struct

我已经定义了一个结构

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

我还定义了这种类型结构的 vector vector

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

我有两个问题。

1) 我是否定义了 vector ,以便行数属于 (numLevels*levelSize),列数属于 levelSize

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

最佳答案

回复:1

是的。但我忍不住觉得你想改为这样做:

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

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

回复:2

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

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

其中 spaceStation[level] 返回索引 level 处的 vector ,然后您将其作为位于 pathindex 位置的元素(这是一个实例您的结构),最后修改该结构中的值。

关于c++ - 包含结构的 vector 的 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19041663/

相关文章:

c# - 如何确保 T 在固定字节数内是可序列化的?

c - 静态结构无法正常工作

c - 我应该如何在函数中传递结构?

c++ - 为什么 setPrecision 不自动使用最低可用精度?

c++ - 在 vector 上使用迭代器时,'std::bad_alloc' 甚至是错误的 vector 大小

c++ - 以下代码有什么问题?它没有编译

c++ - 在没有特定容器时检查迭代器是否未分配给项目

r - 将向量如 c ("x","y","z") 转换为 function(x , y, z){}

c++ - 对本周大师的理解 #67 : Double or Nothing

c++ - 默认情况下通过引用传递的数组?