我是排序點,我爲排序部分編寫的代碼完美工作,但我有一個問題。每隔一段時間(在隨機時間)隨機點就會被添加到向量的末尾,當我嘗試使用pop_back()刪除這些最後的元素時(因爲我寫了一小部分來檢查以確保點的數量是同樣),我最終陷入了一個無限循環,試圖刪除這些最後的元素,它們不會消失。有什麼我應該知道的嗎?即使我不試圖刪除它們,也有一些點會隨機消失。我試圖瞭解我需要做些什麼來防止這些奇怪的點彈出,因爲這些點按特定的順序排序。std :: vector隨機向元素添加元素
我只有三個插入方法和第一種是emplace_back(),接下來是一個插入,最後也是一個插入方法:
if (afterX >= spheres.capacity())
spheres.emplace_back(center);
else if(afterX == -1)
spheres.insert(spheres.begin(),center);
else
spheres.insert(std::next(spheres.begin(), afterX),center);
elementCount++;
這裏是我的輸出,獲得一個理念:
Point: <5,0,0>
zFind: -1
<5,0,0>
Point: <10,0,0>
zFind: 0
yFind: 0
<5,0,0><10,0,0>
Point: <100,0,0>
zFind: 0
yFind: 0
<5,0,0><10,0,0><100,0,0><2.11207e-023,0,0>
Point: <30,0,0>
zFind: 0
yFind: 0
<5,0,0><10,0,0><30,0,0><100,0,0>
Point: <20,0,0>
zFind: 0
yFind: 0
<5,0,0><10,0,0><20,0,0><30,0,0><100,0,0><2.10934e-023,2.21351e+033,0><0,0,2.21351e+033><0,0,0>
正如你可以看到這一點:一點是在一系列正確添加(最小到最大),但這些都是在年底奇怪的額外的數字是有,然後消失。
感謝, 西蒙
最有可能的是,插入和從元素中刪除元素會使所有現有的迭代器失效。但是如果沒有看到代碼,就很難給出真正的答案。 –
只需推回元素並進行排序。簡化您的代碼。 –