zoukankan      html  css  js  c++  java
  • c++ 用lambda删除vector中元素

    vector<string> vec,vec2;
        string str;
        
        while(cin>>str)
            vec.push_back(str);
        
        cin.sync();
        cin.clear();
        while(cin>>str)
            vec2.push_back(str);
        typedef vector<string>::iterator Iter;
        string s;
     
        vec.erase(remove_if(vec.begin(),vec.end(), [=](string s) ->bool
            {
                 
                vector<string>::const_iterator retEnd=find(vec2.begin(),vec2.end(),s);
                if(retEnd!=vec2.end())
                    return true;
                return false;
                 
                 
        }),vec.end());

       程序虽小,但是有很多需要注意的地方。画红线的必须是const_iterator ,不能使iterator,否则提示无法从const_iterator 转换为iterator,lambda是常量调用,const Container后,返回的迭代器是const_iterator.

  • 相关阅读:
    10.28
    10.25
    10.21
    移动第七次作业
    移动第六次作业
    移动第五次作业
    移动第四次作业
    移动第3次作业
    移动第二次作业
    移动第一次作业
  • 原文地址:https://www.cnblogs.com/youxin/p/2583565.html
Copyright © 2011-2022 走看看