通过函数指针对类内的 STL SET 使用自定义比较器
using custom comparator for STL SET inside class through function pointer
我正在尝试在类中使用此自定义比较器函数创建一个集合
bool cmpFunc(const node* a,const node* b)
{
return (a->freqOfAlphabet) <= (b->freqOfAlphabet) ;
}
class huffmanEncoder
{
set<node*,bool (*)(const node*,const node*)> mset(&cmpFunc) ;// throws error
....
}
但我收到一个错误,因为"'&'令牌之前的预期标识符">
同样的事情在主里面工作正常
int main()
{
set<node*,bool (*)(const node*,const node*)> mmset(&cmpFunc) ; // works fine
}
请让我知道此错误背后的原因,非常感谢
你不能在函数中编写可执行代码,因为
set<node*,bool (*)(const node*,const node*)> mset(&cmpFunc) ;
是一个构造函数调用(即可执行代码(,它不在函数中(在class
声明中( - 这是不允许的。
使用构造函数初始值设定项列表初始化成员:
class huffmanEncoder
{
set<node*,bool (*)(const node*,const node*)> mset;
huffmanEncoder () : mset(&cmpFunc) {}
....
};
相关文章:
- 通过函数指针对类内的 STL SET 使用自定义比较器
- C++STL中set的'insert'函数的原理是什么?
- 直接访问 STL "set"元素
- 为什么 STL Set 会覆盖具有相同值的对
- STD :: SET(或STD :: MAP)是否有一个提供基于值的查找的STL比较器?STD :: lands_les
- 如何在STL MAP(SET)中的范围中找到所有元素
- STL SET 迭代器赋值 没有可行的候选者
- Binary_search 在 STL 集中查找 set 的成员函数?
- STL中set的insert函数中为什么存在位置参数
- STL <set> 搜索
- 为什么 STL <set> 重载运算符<函数必须是常量函数?
- 在C#中创建一个STL std::set并封送到C++
- C++:STL:set:存储值常量
- 如何迭代地打印SET (STL)中的元素
- 将映射转换为STL中的set
- C++ STL set implementation
- 为什么C++ STL set 容器的 count() 方法被命名为这样?
- 创建string+int set stl类型
- 使用迭代器调用STL Set中的非静态函数
- STL SET中项的顺序因程序的不同运行而不同