zoukankan      html  css  js  c++  java
  • C++ unique 里 类型为vector<vector<int>> 的比较函数

    在使用 algorithm的unique 时剔除 vector<vector<int>里面重复的元素时把它想得太复杂了,记录一下

    bool comp(vector<int> v1,vector<int> v2){
        for(unsigned i=0;i<v1.size();++i){
            if(v1[i]!=v2[i])return false;
        }
        return true;
    }
    
    int main(){
    
        vector<vector<int>> vvi{{3,5},
                                {3,5},
                                {2,3,5}};
        vector<vector<int>>::iterator it = unique(vvi.begin(),vvi.end(),comp);
        vvi.erase(it,vvi.end());
        return 0;
    }

    当把comp()放到一个class 里面时又出现了错误。。。

    有两种办法

    第一个将比较函数申明为static

        ...
         vector<vector<int>>::iterator it = unique(ret.begin(),ret.end(),&Solution::comp); ret.erase(it,ret.end()); return ret; } private: bool comp(vector<int> v1,vector<int> v2){ for(unsigned i=0;i<v1.size();++i){ if(v1[i]!=v2[i])return false; } return true; }

    第二个使用lambda构造临时函数

            vector<vector<int>>::iterator it = unique(ret.begin(),ret.end(),[](vector<int> v1,vector<int> v2){
                    for(unsigned i=0;i<v1.size();++i){
                        if(v1[i]!=v2[i])return false;
                    }
                    return true;
            });

    这儿顺便记录一下unique返回的是最后一个符合要求的下一位。

  • 相关阅读:
    大话设计模式——UML图
    IdentityServer3零星笔记
    Angular路由
    基于jquery的静态页面翻页
    00_python安装与配置(mac)
    OracleParameter.UdtTypeName的值必须是全大写!
    VS2012调用64位IIS Express
    MVC中使用Ueditor
    优秀博客站点
    jqGrid中的formatter
  • 原文地址:https://www.cnblogs.com/kkcoolest/p/12761599.html
Copyright © 2011-2022 走看看