mgu*_*gus 1 c++ function functor stdvector
我在这里看过很多文章,但在比较的情况下,仍然没有弄清楚函子类相对于简单函数的优势。所以我有一个代码摘录,他们想unsigned char *通过简单地遍历每个字符并从左到右比较具有优先级的 ASCII 代码来对向量进行排序。
函子是
class Sorter {
private:
unsigned int length;
public:
Sorter( unsigned int _length ): length( _length ) {}
bool operator()( const unsigned char* keyl, const unsigned char* keyr ) { return cmpKey( keyl, keyr, length ); }
};
Run Code Online (Sandbox Code Playgroud)
并且该cmpKey()功能基本上执行我上面描述的操作。对数据进行排序的调用是
sort( localList.begin(), localList.end(), Sorter( 100 ) );
Run Code Online (Sandbox Code Playgroud)
其中 100 是每个字符串的长度。所以,我读过函子的优点是可以存储调用到调用的阶段,并允许将类用作普通函数。我有两个问题:
在这种情况下,这样做有什么好处?
Sorter将创建多少个类实例?它是只有 1 还是与 的元素一样多locaList?