谁能帮我检测导致分割错误的尺寸不一致?
这让我发疯......我基本上是在做这个代码,是a[m].size()=48,和transform_dimension.size()=6。它给了我恼人的分段错误,我已经经历了所有维度多次并且无法发现错误,有人可以帮忙吗?它是 C++
void transform (vector<vector<int>> a, int m)
{
vector<bitset<8> > transform_dimension;
for (int i=0; i<a[m].size(); i+=8)
{
for (int j=0; j<8; j++)
{
bitset<8> b;
b[7-j]=a[m][i+j];
transform_dimension[i/8]=b;
}
}
for (int i=0; i<transform_dimension.size(); i++)
cout<<transform_dimension[i]<<endl;
}
回答
这是一个大小为零的向量。
vector<bitset<8> > transform_dimension;
vector<bitset<8> > transform_dimension;
下一行访问大小为零的向量。不管 的值i是多少,大小为零的向量没有元素,您不能合法地使用[]它。
transform_dimension[i/8]=b;
您似乎有一个普遍但完全错误的信念,即在分配给给定索引时向量会调整其大小。
根据你的描述,如果你改变了
到
vector<bitset<8> > transform_dimension(a[m].size()/8);
代码会起作用(或者至少少了一个错误)。使用该代码,您可以创建所需大小的向量。