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 ::ведут себя по-разному?
Я хотел бы иметь структуру данных без различий в реализации, возможно ли это?
Вероятно, мне нужно изменить структуру данных для такого рода операций