我有一个自定义类型的Elemtents列表:
std::list<CDataTransferElement*> m_list;
该类的定义如下:
class CDataTransferElement
{
public:
CDataTransferElement(void);
~CDataTransferElement(void);
CString Name;
double PercentValue;
double MOLValue;
int PhaseIndex;
};
我在m_list对象中有x个项目,必须通过新对象中的PhaseIndex变量进行排序(有哪种类型)。 最后我需要x个CDataTransferElement元素列表,其中每个列表只有具有相同PhaseIndex的元素。
我最好怎么做?
问候 camelord
答案 0 :(得分:1)
遍历您的列表,将每个CDataTransferElement添加到存储在地图中的新列表。
std::map<int,std::list<CDataTransferElement*> > m;
for( std::list<CDataTransferElement*>::iterator i=m_list.begin(); i!=m_list.end(); ++i)
{
m[ (*it)->PhaseIndex ].append( (*it) );
}
然后,您可以使用新的分隔列表循环遍历地图以执行任何操作。
for( std::map<int,std::list<CDataTransferElement*> >::iterator it = m.begin();
it!=m.end();
++it )
{
do_somthing_with_list( it->first, it->second );
}
答案 1 :(得分:0)
使用标题
它提供了std :: sort(std :: iterator begin,std :: iterator end)
答案 2 :(得分:0)
您可能需要使用自定义比较器。请参阅示例sort std::list case sensitive elements。
答案 3 :(得分:0)
如果你想使用std :: sort,你可以重载运算符&lt;在你的班上 我认为如果你想随机访问,使用vector而不是list会好得多。