美文网首页
multiset 自定义比较函数

multiset 自定义比较函数

作者: 依杖听江声 | 来源:发表于2017-03-13 10:46 被阅读0次
#include <string>
#include <iostream>
#include <set>
#include <memory>

using std::shared_ptr;
using std::multiset;
using std::string;
using std::cout;
using std::endl;

class MS{
    bool compareIsbn(const shared_ptr<string> &lhs,const shared_ptr<string> &rhs)
    {
        return *lhs < *rhs;
    }
    multiset<shared_ptr<string>, decltype(compareIsbn)*> item(compareIsbn);
};
int main(){ MS bbb;} 

上面这一段代码在g++ 和 vs2015下都无法编译,错误提示为:

error:compareIsbn 不是类型名

调试了几个小时,推测有两个主要的原因:

  • 非静态成员函数compareIsbn不能作为自定义比较函数
  • 静态成员函数无法作为copy constructor参数,如果想使用静态成员函数作为比较函数,需要使用braced Initialization形式。
    附修改后的正确代码(只列出修改部分):
static bool compareIsbn(const shared_ptr<string> &lhs,const shared_ptr<string> &rhs)
    {
        return *lhs < *rhs;
    }
multiset<shared_ptr<string>, decltype(compareIsbn)*> item{compareIsbn};

相关文章

  • multiset 自定义比较函数

    上面这一段代码在g++ 和 vs2015下都无法编译,错误提示为: error:compareIsbn 不是类型名...

  • STL:set,multiset

    sethe和multiset会在插入元素时,若元素为常见类型,会对元素进行排序,可以自定义排序,默认为从小到大。

  • 如何自定义比较函数

  • mysql-自定义函数

    创建自定义无参数函数 调用自定义函数 创建有参数的自定义函数 调用有参数的自定义函数 创建具有复合结构的自定义函数...

  • 9.MySQL自定义函数

    自定义函数 自定义函数的两个必要条件 参数 返回值 创建自定义函数 函数体 例子 带有参数的自定义函数 删除函数 ...

  • trace函数、自定义函数

    trace函数:修改部分可见函数的源代码。自定义函数:函数名<-function(){ } ①自定义函数 ②匿名函...

  • sql server 自定义函数

    函数分为系统函数,自定义函数。 系统函数 如聚合函数,max(),min() 等等系统提供的函数。 自定义函数 自...

  • Django自定义过滤器及标签

    自定义的引入:内置函数>>>>>>>>>>>>>>>自定义函数内置模块>>>>>>>>>>>>>>>自定义模块内置...

  • python03-函数

    函数传递 函数可以作为参数传递 内置函数 自定义filter函数: 自定义map函数: 文件管理 2.7 and ...

  • php函数应用

    自定义函数语法格式 自定义函数参数 自定义函数返回值 局部变量 函数内部声明的变量, 只能在函数内部调用, 这就是...

网友评论

      本文标题:multiset 自定义比较函数

      本文链接:https://www.haomeiwen.com/subject/gfjfnttx.html