gpt4 book ai didi

c++ - C++仿函数的优势比较

转载 作者:太空宇宙 更新时间:2023-11-04 15:32:54 25 4
gpt4 key购买 nike

我在这里看了很多文章,但仍然没有弄清楚在比较的情况下仿函数类相对于简单函数的优势。所以我有一段代码摘录,其中他们想通过简单地遍历每个字符并从左到右比较 ASCII 代码和优先级来对 unsigned char * 的 vector 进行排序。

仿函数是

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 ); }
};

cmpKey() 函数基本上完成我上面描述的事情。对数据进行排序的调用是

sort( localList.begin(), localList.end(), Sorter( 100 ) );

其中 100 是每个字符串的长度。所以,我读到仿函数具有存储调用阶段的优势,并允许将类用作普通函数。我有两个问题:

  1. 在这种情况下这样做有什么好处?

  2. 将创建多少个 Sorter 类实例?是locaList的元素只有1个还是一样多?

最佳答案

  1. 优点是可以存储状态。在您的例子中,状态是 length=100
  2. 调用 Sorter(100) 时会创建一个仿函数。它可能会被复制少量次数(例如调用 sort()),但不是针对每个元素。

关于c++ - C++仿函数的优势比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44754114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com