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 回答