我有
vector<vector<int>> vec
Run Code Online (Sandbox Code Playgroud)
在我的c ++应用程序中.
每个作为"大"向量元素的整数向量都有4个INT值.我想基于它的内容向量(我的意思是每个"内部"向量第三元素)的第三个值对vec进行排序 - 是否可能?
编辑
假设我有一个功能
COST(vector<int>)
Run Code Online (Sandbox Code Playgroud)
根据我的矢量值计算出一些值 - 我可以在比较参数中使用它吗?它会帮助我更多.
Jos*_*eld 26
当然是啦.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];
});
Run Code Online (Sandbox Code Playgroud)
或者,您可以传递任何其他可以使用签名调用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);
});
Run Code Online (Sandbox Code Playgroud)