我有结构 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/

10-13 06:59