我在编写解决背包问题的算法时遇到了问题.我有一个3元素数组(C++ 11)的向量,我想通过let的说明这些数组的第一个元素来对向量进行排序.
我已尝试使用预定义的比较函数进行std :: sort,但它甚至都没有编译.
我想我的比较功能不能像我期望的那样工作:
bool compareByValue(const data &a, const data &b) { return a[0] < b[0]; } int main() { vector> myVector; ... sort ( myVector.begin(), myVector.end(), compareByValue ); }
这不是我第一次遇到类似的问题,我试图在网上找到解决方案,但没有任何令人满意的结果.
另请注意,std::array
有重载的比较运算符,它按字典顺序比较数组.这意味着,如果要基于第一个元素进行排序,则甚至不需要谓词.只是std::sort
你的矢量.