c++ - 在 C++ 排序中指定比较函数的参数

标签 c++ sorting c++11 stl

我的问题是C++排序函数中的compare函数是如何带参数的。 如果我想对数组进行排序,但也想保留元素的索引,我想根据实际数组中的元素对索引数组进行排序。问题是我无法找到如何将参数传递给比较函数。 假设数组是 3 5 4 2 索引是 0 1 2 3 。我想要索引数组输出 3 0 2 1 即 2 3 4 5 。我怎样才能使用排序功能做到这一点。

最佳答案

一种方法:

vector<int> data{  3, 5, 4, 2 },
            index{ 0, 1, 2, 3 };
sort(index.begin(), index.end(), [&data](int i, int j) { return data[i] < data[j]; });
for (int i : index)
{
    cout << i << ' ';
}

关于c++ - 在 C++ 排序中指定比较函数的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58667345/

相关文章:

c++ - **直接**获取基于范围的循环中的元素类型,例如对于 "using"

c++ - 当通知简历时,condition_variable::wait_for是否返回true

c++ - 统一扩展两个参数包

c++ - 使用实时绘图数据进行简单的实时绘图

MySQL Order By 不适用于所有记录

c++ - 使用类内成员初始化委托(delegate)构造函数

c++ - 在 Windows 下使用 C++ 计算处理器

ios - Sqlite3 日期不排序 ios

Java 比较器compareToIgnoreCase

c++11 - C++ 将 lambda 传递给模板参数