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.

  • 相关阅读:
    JZ-C-36
    JZ-C-35
    JZ-C-34
    JZ-C-33
    JZ-C-32
    JZ-C-31
    JZ-C-30
    JZ-C-29
    JZ-C-28
    JZ-C-27
  • 原文地址:https://www.cnblogs.com/youxin/p/2583565.html
Copyright © 2011-2022 走看看