最近遇到这样的问题:
set里保存的是指针,但是需要的是插入指针内容不重复,这样就需要定义比较函数。
经查阅,set默认是按less比较的,经过多次尝试,发现比较函数应该这样写:
<pre name="code" class="cpp">class Symbol{
......
}
class SymbolLess : public std::binary_function<Symbol, Symbol, bool>{
public:
bool operator () (Symbol* lhs, Symbol* rhs) const
{
return lhs->getContent()< rhs->getContent();
}
};
在使用的时候,set<Symbol*, SymbolLess> Symbols;//所有符号集合