按数组元素排序数组的向量

时间:2015-12-11 09:24:47

标签: c++ arrays sorting c++11 vector

在编写用于解决背包问题的算法时遇到了问题。我有一个3元素数组的向量(C ++ 11),我想通过let的说明这些数组的第一个元素来对矢量进行排序。

我尝试过使用预定义比较函数的std :: sort,但它甚至没有编译。

我想我的比较功能不能像我期望的那样工作:

bool compareByValue(const data &a, const data &b)
{
    return a[0] < b[0];
}

int main()
{
    vector<array<int, 3> > myVector;
    ...
    sort ( myVector.begin(), myVector.end(), compareByValue );
}

这不是我第一次遇到类似的问题,我试图在网上找到解决方案,但没有任何令人满意的结果。

2 个答案:

答案 0 :(得分:5)

另请注意std::arrayoverloaded comparison operators,它按字典顺序比较数组。这意味着,如果你想根据第一个元素进行排序,你甚至不需要谓词。只需std::sort你的矢量。

答案 1 :(得分:2)

我不知道您从哪里获得data,但您需要将其更改为array<int, 3>或将compareByValue设为模板:

bool compareByValue(const array<int, 3> &a, const array<int, 3>&b)
{
    return a[0] < b[0];
}