0

私のプログラムには次のメソッドがあります。

奇妙なことは、消去を呼び出した後、データが削除されないことです。

何か案が?

map<int,obj>::iterator it = this->indexMap.find(id);
if(it != this->indexMap.end())
{
    int mapSize = this->indexMap.size();
    int dataSize = (*it).second.getDataMap().size();

    //copy data to another node | even when it doesn't get into this if condition, it does not remove the data
    if(mapSize> 1 && dataSize != 0)
    {
        it++;
        this->copyData(id,it->first);
        it--;
    }

    //remove peer | i've tried id and it, both does not work
    this->indexMap.erase(it);

    map<int,obj>::iterator iter = this->indexMap.find(id);
    if(iter == this->indexMap.end())
    {
        cout << "ERROR" << endl;
    }
}

出力:

  ERROR

ありがとう!:)

4

1 に答える 1

4

このブロック:

map<int,obj>::iterator iter = this->indexMap.find(id);
if(iter == this->indexMap.end())
{
    cout << "ERROR" << endl;
}

ERRORキーを持つ要素がidマップに見つからない場合に出力されます。したがって、削除されました。

于 2012-05-16T05:57:03.233 に答える