C++;按对象的值对std::列表进行排序 我在C++中为我的有向图做了一个基本的DFS算法。

C++;按对象的值对std::列表进行排序 我在C++中为我的有向图做了一个基本的DFS算法。,c++,sorting,graph,stl,C++,Sorting,Graph,Stl,我得到的是一个类顶点,它有一个char值和一个邻接列表 考虑到这一点,我试图根据对象的值对对象列表进行排序(在我的例子中是顶点,但让我们换个说法) 我的班级是这样的: class Foo { private: char x; list<Foo*> listOfChildrenObject; }; 现在,A是我程序中每个对象的父亲 假设我以这种方式插入了它们: A (the father), D, C, B, E 然后,我想按顺序打印它们: A,B,C,D,E 为

我得到的是一个类顶点,它有一个char值和一个邻接列表

考虑到这一点,我试图根据对象的值对对象列表进行排序(在我的例子中是顶点,但让我们换个说法)

我的班级是这样的:

class Foo {
private:
    char x;
    list<Foo*> listOfChildrenObject;
};
现在,A是我程序中每个对象的父亲

假设我以这种方式插入了它们:

A (the father), D, C, B, E
然后,我想按顺序打印它们:

A,B,C,D,E
为此,我想使用listOfChildrenObject.sort()来实现这一点

有一种方法可以按char值对我的对象列表排序吗

好的,我想我明白了

很抱歉这个愚蠢且重复的问题,我决定在排序中添加lambda函数,并将列表更改为向量(我意识到我没有理由使用列表)

这样:

std::sort(v.begin(), v.end(), [](Foo* a, Foo* b) {return a->getValue() < b->getValue(); });
排序(v.begin(),v.end(),[](Foo*a,Foo*b){returna->getValue()getValue();});
提供一个
operator@PasserBy这是一个
Foo*
的列表。指针稍微复杂一些,但您只需要一个取消引用它们的谓词。无论你使用什么容器都是绝对好的,只要确保它不是链表就行了。稍后谢谢。可能是副本
std::sort(v.begin(), v.end(), [](Foo* a, Foo* b) {return a->getValue() < b->getValue(); });