所以我在我的班級裏面找到了一種方法,這個班級應該做的是檢查我在.h文件中的矢量是否具有值在double low
之間& double high
然後刪除這些,最後返回多少「空格「被刪除向量迭代器擦除給我一個運行時錯誤?
所以我嘗試了一些東西,我總是得到運行時錯誤,它似乎是在for循環,但我無法弄清楚爲什麼。
這裏是我試過,
首先,我想只是做我覺得它的工作方式:
int datastorage::eraseDataPointsBetween(double low,double high)
{
int antal = 0;
for (vector<double>::iterator i = data_.begin(); i !=data_.end();i++)
{
if (*i >=low && *i <=high)
{
data_.erase(i);
antal++;
}
}
return antal;
}
但後來我試着做一些調試和我看得出來,它實際上並沒有讓它變成這樣,因爲當某些東西被刪除時它仍然會增加(所以如果我們刪除「space 2」,它實際上會在下次檢查空間4時(因爲在擦除之後,第3個點成爲第2個點) ))
所以我試圖改變它到這個
int datastorage::eraseDataPointsBetween(double low,double high)
{
int antal = 0;
for (vector<double>::iterator i = data_.begin(); i !=data_.end();)
{
if (*i >=low && *i <=high)
{
data_.erase(i);
antal++;
}
else
i++;
}
return antal;
}
凡只遞增i
每當我不刪除空格(所以如果我刪除「空間2」,它會檢查新的「空間2」下一次運行)
這也給了我語法錯誤expression: vector iterators incompatible
希望能幫到你,因爲我幾乎失去了
,所以你不能用它的呼叫後,進行消除
如何定義'data_'類型? – billz
vector data_; –
Sumsar1812
但我有一些其他的功能,把值放入向量,這是行不通的,我可以發佈它們,但並不認爲它們是需要的 – Sumsar1812