gpt4 book ai didi

c++ - 使用抽象类的 STL 排序

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

我在使用 STL 排序函数对派生类进行排序时遇到问题。

例子-

标题:

vector<AbstractBaseClass *> *myVector;  

在 ImpL 中:

sort(myVector->begin(), myVector->end(), compareBy);

比较器:

bool MyClass::compareBy(AbstractBaseClass& a, AbstractBaseClass& b) {
return (a->someMethod() < b->someMethod());
}

编辑:这个问题是针对使用 STL 对抽象类进行排序的一般用法(我没有发布跟踪转储)。如果它还不明显,我会说它根本不可能像打印的那样编译。相反,我在问(给定数据结构)人们通常如何使用这个玩具抽象类进行排序。

感谢您的快速回答,我相信你们已经搞定了!

爱上了 StackOverFlow!

最佳答案

一个例子:

struct Abstr {
virtual int some()const == 0;
virtual ~Abstr() = default;
};

bool abstrSmaller( const Abstr* a1, const Abstr* a2 ) {
return a1->some() < a2->some();
}

int main() {
vector<Abstr*> v;

sort( v.begin(), v.end(), abstrSmaller );
}
  1. 比较函数不应是成员函数:static 或自由函数。
  2. 它应该将 vector 的元素作为参数,即指针,而不是引用。
  3. 它可以调用const 函数,因此它可以接受const 参数。

关于c++ - 使用抽象类的 STL 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1685858/

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