Sorting C++;如何使用lambda函数对唯一的ptr向量进行动态排序?
所以我有一个Sorting C++;如何使用lambda函数对唯一的ptr向量进行动态排序?,sorting,lambda,c++11,unique-ptr,Sorting,Lambda,C++11,Unique Ptr,所以我有一个std::vector vec,我试图动态地对它进行排序,因为Derived1和Derivedn之间存在逻辑比较(Derivedn总是>Derivedn-1>…>Derived1)(假设n=10左右),并且每个Derivedx都有自己与Derivedx的不同比较。例如,假设10位整数>9位整数>1位整数,但在每个派生类中53>32(但我没有对整数排序) 所以我可以这样做: std::sort(vec.begin(), vec.end(), [](std::unique_ptr<
std::vector vec
,我试图动态地对它进行排序,因为Derived1和Derivedn之间存在逻辑比较(Derivedn总是>Derivedn-1>…>Derived1)(假设n=10左右),并且每个Derivedx都有自己与Derivedx的不同比较。例如,假设10位整数>9位整数>1位整数,但在每个派生类中53>32(但我没有对整数排序)
所以我可以这样做:
std::sort(vec.begin(), vec.end(),
[](std::unique_ptr<Base>& const a, std::unique_ptr<Base>& const b){
return *a<*b;}
排序(vec.begin(),vec.end(),
[](标准::唯一\u ptr&常数a,标准::唯一\u ptr&常数b){
返回*A < P>查看第31章,使函数相对于史葛迈尔斯中的多个对象虚拟,更有效的C++ + < /P>
另外,试着在谷歌上搜索短语double dispatch和multiple dispatch。嗯……我可能会使用覆盖
操作符的方法。如果multimethods提案能够将其纳入语言中,那就太好了。