我在我的軟件中發現了一個奇怪的錯誤。
內部while循環,我從一個std刪除元素::集,我想總是直到容器是空採取的第一個元素:
std::set< int*> nodes;
// Fill nodes
for (int i=0; i<10;i++)
nodes.insert(new int);
//
while (!nodes.empty())
{
int* pivot = (*nodes.begin());
// do some operation with pivot erasing some elements from nodes
}
我發現,執行的第一個元素這樣的作品與海灣合作委員會,但不與MSVC,它崩潰,我試圖取消引用(*nodes.begin())
迭代器。
std :: set的兩個實現的行爲是否有所不同?
我想要一個沒有實現差異的數據結構,這有可能嗎?
也許我必須改變VS2010數據結構,對於這種操作
您提領後會怎樣刪除? – Nick 2012-04-27 13:34:41
什麼是「做一些操作與樞軸擦除節點的一些元素」 – 2012-04-27 13:34:57
只是像這樣解除*(nodes.begin()) – v01d 2012-04-27 13:35:02