Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 重新调用std::multiset容器_C++ - Fatal编程技术网

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);
}