我在我的软件中发现了一个奇怪的错误。
内部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