我想从c++中的 vector 中删除元素,但是它显示了运行时断言错误。

我的代码是:

   int i=0;
        for(socketIterator=vectClientSocket.begin();socketIterator!=vectClientSocket.end();){
            SOCKET clientSocket=*socketIterator;

            isTrue=getBufferData(strt,stp,rm,clientSocket);
            if(!isTrue){
                vectClientSocket.erase(vectClientSocket.begin()+i);

                vector<RMLObserver*>::iterator it;
                for(it=vectRMLObserver.begin();it<vectRMLObserver.end();it++)
                {
                    RMLObserver *observer = (RMLObserver*)*it;
                    observer->infosetSent(info->getRMLThinTranskportToken());
                }
            }
            else
                ++socketIterator;

            i++;
        }

删除一个元素后,它将显示运行时错误,

请帮助我...谢谢你。

最佳答案

您需要在删除元素后更新迭代器:

socketIterator = vectClientSocket.erase(socketIterator);

另请参见std::vector ::erase(..)documentation

[编辑]

使用运算符!=(..)比较迭代器:
for(socketIterator=vectClientSocket.begin();socketIterator!=vectClientSocket.end();){

关于c++ - 在 vector C++中在运行时显示断言错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7171309/

10-11 19:30