Как получить первый элемент стандартного набора ::

I всем вам,

Я обнаружил странную ошибку в своем программном обеспечении.

Внутри цикла 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
}

Я обнаружил, что реализация первого элемента таким образом работает с gcc, но не с MSVC вылетает, когда я пытаюсь разыменовать итератор (*nodes.begin()).

Две реализации набора std ::ведут себя по-разному?

Я хотел бы иметь структуру данных без различий в реализации, возможно ли это?

Вероятно, мне нужно изменить структуру данных для такого рода операций

15
задан linello 27 April 2012 в 13:32
поделиться