我有
vector<vector<int>> vec
在我的C++应用程序中。
每个作为“大” vector 元素的整数 vector 都有4个INT值。
我想根据整数的内容 vector 的第三个值对vec进行排序(我的意思是每个“内部” vector 的第三个元素)-可能吗?
编辑
假设我有一个功能
COST(vector<int>)
它根据我的 vector 值计算出一些值-我也可以在比较参数中使用它吗?这对我有很大帮助。
最佳答案
当然是啦。 std::sort
可以采用第三个参数,该参数是排序时要使用的比较函数。例如,您可以使用lambda函数:
std::vector<std::vector<int>> vec;
// Fill it
std::sort(vec.begin(), vec.end(),
[](const std::vector<int>& a, const std::vector<int>& b) {
return a[2] < b[2];
});
另外,您可以传递签名
bool(const std::vector<int>&, const std::vector<int>&)
可以调用的其他任何东西,例如仿函数或函数指针。编辑响应:只需将
COST
函数应用于a
和b
:std::sort(vec.begin(), vec.end(),
[](const std::vector<int>& a, const std::vector<int>& b) {
return COST(a) < COST(b);
});