目前我正在学习标准模板库(STL)。这个程序为什么重载()运算符?
在这个程序中,我将一些长的值存储在关联容器中,然后根据单元的位置(根据单元位置的数字)对它们进行排序。
代码:
#include <iostream>
#include <set>
#include <functional>
using namespace std;
class UnitLess
{
public:
bool operator()(long first, long second)
{
long fu = first % 10;
long su = second % 10;
return fu < su;
}
};
typedef set<long, UnitLess> Ctnr;
int main(void)
{
Ctnr store;
store.insert(3124);
store.insert(5236);
store.insert(2347);
store.insert(6415);
store.insert(4548);
store.insert(6415);
for(Ctnr::iterator i = store.begin(); i != store.end(); ++i)
{
cout << *i << endl;
}
}
但我不明白,为什么我们的教授重载()运算符?
谢谢。
仿佛重载'()'操作被称为在例如在所有它不会出现。也许它会在后面的练习中介绍? – 2010-10-08 08:32:46
是它被称为时'的std :: set'试图插入按排序顺序(二进制谓词) – Benoit 2010-10-08 08:35:03
@格雷格Hewgill运算符()元件被称为内部时,它执行store.insert(一些长值); – Searock 2010-10-08 08:35:34