gpt4 book ai didi

c++ - vector 分配崩溃

转载 作者:行者123 更新时间:2023-12-01 18:11:10 25 4
gpt4 key购买 nike

vector< vector<int> > resizeVector(vector< vector<int> > m)
{
vector< vector<int> > newMatrix;
int i,j;

for (i = 0; i < m[i].size(); i++)
{
for(j = 0; j < m[j].size(); j++)
{
newMatrix[i][j] = m[i][j];
}
}
return (newMatrix);
}

我正在编写一个程序,它将进行大量的矩阵操作,这部分崩溃了,我不知道为什么。我已将范围缩小到以下行:

newMatrix[i][j] = m[i][j];

它就在这里崩溃了,我不知道为什么。

最佳答案

除了 @Saurav 发布的内容之外,newMatrix 是空的,因此您无法为 newMatrix[i][j] 赋值。您可以通过使用给定大小初始化 vector 来解决此问题:

vector< vector<int> > resizeVector(vector< vector<int> > m)
{
vector< vector<int> > newMatrix(m.size());
int i,j;

for (i = 0; i < m.size(); i++)
{
newMatrix[i].resize(m[i].size());
for(j = 0; j < m[i].size(); j++)
{
newMatrix[i][j] = m[i][j];
}
}
return (newMatrix);
}

在 for 循环之前,我们初始化 newMatrix 以在其中包含 m.size() 许多空 vector (由于它们的默认构造函数, vector 是空的)。在外部 for 循环的每次迭代期间,我们使用 resize 成员函数确保 newMatrix 中的每个 vector 具有正确的大小。

请注意,如果您想要 vector 的拷贝,您只需编写:

vector< vector<int> > newMatrix(m);

关于c++ - vector 分配崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43347592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com