C++ 重新调用std::multiset容器
在我的程序中,当我进行更改时,我想对集合重新排序,但是当我调用这两个可选函数时,我得到一个迭代器不可递增的错误。我意识到问题发生在我调用清除或交换时。如何更正此代码,或者是否有其他方法进行重新排列C++ 重新调用std::multiset容器,c++,C++,在我的程序中,当我进行更改时,我想对集合重新排序,但是当我调用这两个可选函数时,我得到一个迭代器不可递增的错误。我意识到问题发生在我调用清除或交换时。如何更正此代码,或者是否有其他方法进行重新排列 void CObjectHandling::ReOrder() { multiset<IDrawable*, Drawable_compare> TmpContainer; for (auto i = mDrawableReferences.begin(); i != m
void CObjectHandling::ReOrder()
{
multiset<IDrawable*, Drawable_compare> TmpContainer;
for (auto i = mDrawableReferences.begin(); i != mDrawableReferences.end(); ++i)
{
TmpContainer.insert(*i);
}
mDrawableReferences.clear();
for (auto i = TmpContainer.begin(); i != TmpContainer.end(); ++i)
{
mDrawableReferences.insert(*i);
}
TmpContainer.clear();
}
您得到的确切错误是什么,在哪一行?您还可以通过执行:TmpContainer.insertmdrawablerences.begin,mdrawablerences来删除循环。end@Collin程序正在编译。通过释放鼠标按钮调用重新排序函数。当我释放按钮时,编译器抛出一个迭代器不可递增的错误。但当我评论“交换”或“清除”程序时,鼠标释放时不会抛出任何错误,因为这会导致每次鼠标释放时多集的大小加倍,从而导致程序崩溃。-无论如何,我这样做是为了发现问题。
void CObjectHandling::ReOrder()
{
multiset<IDrawable*, Drawable_compare> TmpContainer;
for (auto i = mDrawableReferences.begin(); i != mDrawableReferences.end(); ++i)
{
TmpContainer.insert(*i);
}
mDrawableReferences.swap(TmpContainer);
}