Mar*_*dik 5 c++ stl-algorithm c++11
class Widget;
std::vector< std::shared_ptr<Widget> > container
class Criterium
{
public:
bool operator()(const Widget& left, const Widget& right)const;
};
Run Code Online (Sandbox Code Playgroud)
如何根据Criterium对容器进行排序,而不是定义另一个标准,如:
class CriteriumForPointers
{
public:
bool operator()(const std::shared_ptr<Widget>& left,
const std::shared_ptr<Widget>& right)const;
};
Run Code Online (Sandbox Code Playgroud)
您可以使用lambda作为适配器:
Criterium criterium;
sort(container.begin(), container.end(),
[&criterium] (const shared_ptr<Widget> &l, const shared_ptr<Widget> &r)
{
return criterium(*l.get(), *r.get());
}
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4255 次 |
| 最近记录: |