0

我有一个函数可以检查向量的值,然后删除其中没有足够值的块来考虑。

vector<iniMatrix> Audio::filter(vector<iniMatrix>&blocks, double sumThres, double ZeroThres)
{
double totalSum = this->width * sumThres;
double totalZero = this->width * ZeroThres;

int currZero = 0;
int currsum = 0;

int prevsign = 0;

for(auto int i=0; (i < 96); i++)
{
    int currsign = zerocross(blocks[i]);
    double currSumOfBlocks = this->energy(blocks[i]);

    if(!totalSum > currSumOfBlocks || totalZero > currsign)
    {
        blocks[i].erase(blocks[i].begin()+blocks.size());
    }
}

return blocks;
}

它一直工作到擦除块为止,它不会删除它们,因为当我输出blocks.size()它时它仍然与以前的值相同,它应该更小。

有人知道为什么会这样吗?

4

1 回答 1

1

如果你想删除第 i 个元素,你应该这样做:

blocks.erase(blocks.begin()+i);
于 2012-11-14T20:21:19.343 回答