我有

    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函数应用于ab:
std::sort(vec.begin(), vec.end(),
          [](const std::vector<int>& a, const std::vector<int>& b) {
  return COST(a) < COST(b);
});

10-07 19:12
查看更多