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