如何获取std :: set的第一个元素

lin*_*llo 15 c++ iterator stl set

我是你们所有人,

我在我的软件中发现了一个奇怪的错误.

在我从一个std :: set中删除元素的while循环中,我希望始终采用第一个元素,直到容器为空:

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
}
Run Code Online (Sandbox Code Playgroud)

我发现以这种方式实现第一个元素适用于gcc但不适用于MSVC,它会在我尝试取消引用(*nodes.begin())迭代器的地方崩溃.

std :: set的两个实现是否有不同的表现?

我希望有一个没有实现差异的数据结构,是否可能?

可能我必须改变这种操作的数据结构

小智 2

你的代码在VS2010中运行良好,也许你应该更新你的vcc。