擦除并删除向量的迭代器

时间:2014-12-22 11:17:07

标签: c++ iterator delete-operator erase

我有一个flowers的向量,其中包含用户插入的每个花的名称,我使用push_back输入名称。在下面的函数中我需要从向量中删除名称,我不明白第(1)和(2)行会发生什么。

P.S。当我使用erase时会发生什么。是否指向迭代器不再存在,但矢量不会变短,矢量也不会变短,因此矢量的所有单元格都会移动"剩下。

void FlowersDB::DeleteFlowers(const std::string& FName)
{
    for(FlowersVec_it iter=Flowers.begin(); iter!=Flowers.end(); iter++)
    {
        if((*iter)->GetFlowerName()==rName)
            {
                delete *iter;//(1)
                flowers.erase(iter); //(2)
                return;
            }
    }
}

0 个答案:

没有答案