WeiHandsome 2023-07-06 10:17 采纳率: 85%
浏览 20
已结题

c++ stl adjacent_find删除相邻元素

img

请问为什么test03用v.erase(++it);test04却用 v.erase(it+1)?
我想设计一个删除相邻元素中的后一个元素的功能


void test03()
{
    //字符串 
    vector<char>v;
    for(int i=0;i<10;i++)
    {
        v.push_back('a');
        v.push_back('b');
        v.push_back('b');
        v.push_back('c');
        if(i<5)
        {
            v.push_back('d'); 
        }
    }
    for_each(v.begin(),v.end(),myPrint);cout<<endl;
    
    vector<char>::iterator it=adjacent_find(v.begin(),v.end());
    for( ;it!=v.end();it++)
    {
        it=adjacent_find(v.begin(),v.end());
        if(it!=v.end())
        {
            v.erase(++it);                 
        } 
    }
    for_each(v.begin(),v.end(),myPrint);cout<<endl;
}

void test04()
{
    //Person容器 
    vector<Person>v;
    char nameSeed[3][2] = { "A","B","C" };
    srand((unsigned int)time(NULL));

    for (int i = 0; i < 3; i++)
    {
        int age = rand() % 100 + 1;
        v.push_back(Person((const char*)nameSeed[i], age));
    }
    v.push_back(Person("C", 0));
    
    for_each(v.begin(), v.end(),MyPrint());
    
    

    vector<Person>::iterator it = adjacent_find(v.begin(), v.end());

    for( ;it!=v.end();it++)
    {
        it=adjacent_find(v.begin(),v.end());
        if(it!=v.end())
        {
            v.erase(it+1);                 
        } 
    }
    for_each(v.begin(),v.end(),MyPrint());cout<<endl;
}

  • 写回答

2条回答 默认 最新

  • WeiHandsome 2023-07-06 14:57
    关注

    正确代码

    
        vector<Person>::iterator it = adjacent_find(v.begin(), v.end());
    
        for( ;it!=v.end();it++)
        {
            it=adjacent_find(v.begin(),v.end());
            vector<Person>::iterator it2=it;
            if(it!=v.end())
            {
                v.erase(++it2);                 
            } 
        }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月10日
  • 已采纳回答 7月6日
  • 创建了问题 7月6日

悬赏问题

  • ¥15 软件供应链安全是跟可靠性有关还是跟安全性有关?
  • ¥15 电脑蓝屏logfilessrtsrttrail问题
  • ¥20 关于wordpress建站遇到的问题!(语言-php)(相关搜索:云服务器)
  • ¥15 【求职】怎么找到一个周围人素质都很高不会欺负他人,并且未来月薪能够达到一万以上(技术岗)的工作?希望可以收到写有具体,可靠,已经实践过了的路径的回答?
  • ¥15 Java+vue部署版本反编译
  • ¥100 对反编译和ai熟悉的开发者。
  • ¥15 带序列特征的多输出预测模型
  • ¥15 Python 如何安装 distutils模块
  • ¥15 关于#网络#的问题:网络是从楼上引一根网线下来,接了2台傻瓜交换机,也更换了ip还是不行
  • ¥15 资源泄露软件闪退怎么解决?