尝试访问 3d 向量中的元素时出现段错误
Seg fault when trying access elements in a 3d vector
所以我的目标是能够访问 5x5x5
3D Vector 中的每个元素。当我调用 toString
函数时,我得到一个 段错误 。这是我第一次初始化一个3d 向量。但是从我所做的所有谷歌搜索中,我发现建议进行此初始化,但我认为这就是问题所在。
如果答案超级简单,请原谅我,我可能只是对简单的事情视而不见。
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;
}
在给定的代码中,我没有看到任何越界。但是,您可以使用 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;
}
所以我的目标是能够访问 5x5x5
3D Vector 中的每个元素。当我调用 toString
函数时,我得到一个 段错误 。这是我第一次初始化一个3d 向量。但是从我所做的所有谷歌搜索中,我发现建议进行此初始化,但我认为这就是问题所在。
如果答案超级简单,请原谅我,我可能只是对简单的事情视而不见。
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;
}
在给定的代码中,我没有看到任何越界。但是,您可以使用 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;
}