谁能帮我检测导致分割错误的尺寸不一致?

这让我发疯......我基本上是在做这个代码,是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);

代码会起作用(或者至少少了一个错误)。使用该代码,您可以创建所需大小的向量。


以上是谁能帮我检测导致分割错误的尺寸不一致?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>