尝试在3D向量中访问元素时出现段故障

时间:2019-10-15 18:10:12

标签: c++

因此,我的目标是能够访问5x5x5 3D向量中的每个元素。当我调用toString函数时,出现段错误错误。这是我第一次初始化3dvector,但是通过所有的谷歌搜索,我发现建议使用这种初始化,但是我认为这是问题所在。

如果答案非常简单,请原谅我,我可能只是对简单的事情视而不见。

vector<vector<vector<int> > > maze(5,vector<vector<int> >(5,vector<int>(5)));

string Pathfinder::toString() const{
  string mazeStr = "";
  cout << maze.size()<< endl;
  for(int i = 0; i < 5; i++){
    for(int j = 0; j < 5; j++){
      for(int k = 0; k < 5; k++){
        cout << k << endl;
        mazeStr = mazeStr + to_string(maze[i][j][k]) + " ";// seg fault problem
        cout << mazeStr <<".mazeStr"<< endl;
      }
      mazeStr = mazeStr + "/n";
    }
    mazeStr = mazeStr + "/n";
  }
  return mazeStr;
}

1 个答案:

答案 0 :(得分:1)

在给定的代码中,我看不到任何超出范围。但是,您可以使用range-based-for-loop而不是基于索引的索引,这样可以确保它不会来自上述函数。

std::string toString() const
{
    std::string mazeStr = "";
    for (const std::vector<std::vector<int>>& vector2D: maze)
    {
        for (const std::vector<int>& vec: vector2D)
        {
            for (const int element: vec)  mazeStr += std::to_string(element) + " ";
            mazeStr += "/n";
        }
        mazeStr += "/n";
    }
    return mazeStr;
}