我有一个检查向量值的函数,然后删除其中没有足够值的块。
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()
的时候,它仍然和以前一样,它应该更小。
有人知道为什么会发生这种事吗?
发布于 2012-11-15 04:21:19
如果你想删除第i个元素,你应该这样做:
blocks.erase(blocks.begin()+i);
https://stackoverflow.com/questions/13386559
复制相似问题