有个迷惑一直困扰着我,就是在定义一个set的变量;
代码如下:
set<int>s2(less<int>(),s1_alloc);
其中s1_alloc是一个内存分配器
深入一点理解,在该中定义方式中为什么需要拷贝()运算符?
关于 set,请看这里:http://www.cplusplus.com/reference/stl/set/set/
关于 less,请看这里:http://www.cplusplus.com/reference/std/functional/less/
你不理解的可能是less<int>(),这种用法叫function object,
你可以看到less里重载了 operator() 。
set的构造函数的第1个参数是需要一个Compare函数,这里传入了一个less<int>的对象实例,因为它重载了operator(),所以在这里当成Compare用了。
function object有一些优势,最直观的就是使用类的一些特性,如模版、继承、成员变量等。比如,你可以在类里定义成员变量,实现不同目的的函数功能。