大家好,
我在我的软件中发现了一个奇怪的错误。
在一个while循环内,我从std::set中删除元素,我想一直取第一个元素,直到容器为空:
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
}
我发现使用这种方式实现第一个元素可以在gcc上运行,但在MSVC上不行,当我尝试解引用(*nodes.begin())
迭代器时会崩溃。
std::set的两种实现行为是否不同?
我想要一个没有实现差异的数据结构,这可能吗?
可能我必须更改数据结构才能进行此类操作。