猿问

对自定义对象的向量进行排序

对自定义对象的向量进行排序如何对包含自定义(即用户定义)对象的向量进行排序。
可能,标准STL算法排序应该使用在自定义对象中的一个字段(作为排序键)上操作的谓词(函数或函数对象)。
我在正确的轨道上吗?

拉丁的传说
浏览 583回答 3
3回答

料青山看我应如是

为了保险起见。我提出了一个实现Lambda表达式.C+11#include&nbsp;<vector>#include&nbsp;<algorithm>using&nbsp;namespace&nbsp;std;vector<&nbsp;MyStruct&nbsp;>&nbsp;values;sort(&nbsp;values.begin(&nbsp;),&nbsp;values.end(&nbsp;),&nbsp;[&nbsp;] (&nbsp;const&nbsp;MyStruct&&nbsp;lhs,&nbsp;const&nbsp;MyStruct&&nbsp;rhs&nbsp;){ &nbsp;&nbsp;&nbsp;return&nbsp;lhs.key&nbsp;<&nbsp;rhs.key;});C+14#include&nbsp;<vector>#include&nbsp;<algorithm>using&nbsp;namespace&nbsp;std;vector<&nbsp;MyStruct&nbsp;>&nbsp;values;sort(&nbsp;values.begin(&nbsp;),&nbsp;values.end(&nbsp;),&nbsp;[&nbsp;] (&nbsp;const&nbsp;auto&&nbsp;lhs,&nbsp;const&nbsp;auto&&nbsp;rhs&nbsp;){ &nbsp;&nbsp;&nbsp;return&nbsp;lhs.key&nbsp;<&nbsp;rhs.key;});

繁花不似锦

您可以使用函子作为std::sort,或者你可以定义operator<在你的班上。struct&nbsp;X&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;x; &nbsp;&nbsp;&nbsp;&nbsp;bool&nbsp;operator<(&nbsp;const&nbsp;X&&nbsp;val&nbsp;)&nbsp;const&nbsp;{&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;x&nbsp;<&nbsp;val.x;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;}};struct&nbsp;Xgreater{ &nbsp;&nbsp;&nbsp;&nbsp;bool&nbsp;operator()(&nbsp;const&nbsp;X&&nbsp;lx,&nbsp;const&nbsp;X&&nbsp;rx&nbsp;)&nbsp;const&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;lx.x&nbsp;<&nbsp;rx.x; &nbsp;&nbsp;&nbsp;&nbsp;}};int&nbsp;main&nbsp;()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;std::vector<X>&nbsp;my_vec; &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;use&nbsp;X::operator<&nbsp;by&nbsp;default &nbsp;&nbsp;&nbsp;&nbsp;std::sort(&nbsp;my_vec.begin(),&nbsp;my_vec.end()&nbsp;); &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;use&nbsp;functor &nbsp;&nbsp;&nbsp;&nbsp;std::sort(&nbsp;my_vec.begin(),&nbsp;my_vec.end(),&nbsp;Xgreater()&nbsp;);}
随时随地看视频慕课网APP
我要回答