我有结构 vector :
vector<Custom> myvec;
自定义是一种结构:
struct Custom
{
double key[3];
};
如何按键 [0] 对 myvec 进行排序。 key[1] 或 key[2] 使用 STL 排序算法?
最佳答案
编写自定义比较器:
template <int i> struct CustomComp
{
bool operator()( const Custom& lhs, const Custom& rhs) const
{
return lhs.key[i]<rhs.key[i];
}
};
然后排序例如通过使用
std::sort(myvec.begin(),myvec.end(),CustomComp<0>());
(按第一个键条目排序)或者使用更新的编译器(支持 c++0x lambda):
std::sort(myvec.begin(), myvec.end(),
[]( const Custom& lhs, const Custom& rhs) {return lhs.key[0] < rhs.key[0];}
);
关于c++ - STL排序问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4408767/