我有一个自定义对象的 arr1,但其中一个成员是 arr1.percentChanged 我需要第二个数组来存储按 percentChanged 排序的 arr1 的索引值,但保持第一个数组不变。
变化的百分比是双倍 [8.67, -9.64, 14.83, 0.99, -5.33] 我将 arr2 初始化为 [0,1,2,3,4] 但我不知道如何对其进行排序。即它应该是 [2,0,3,4,1]。非常感谢任何有关如何执行此操作的帮助。
我认为我的问题是我的第一个数组不是 double 组,而是 stockObjects 数组。所以 arr1 实际上是 [obj1,obj2...] 但每个 obj 都有一个 obj.percentChanged 成员。它们在 arr1 中按 obj.name 排序。我有一个名为 stockListType 的第二个自定义对象,它需要一个 sortPercentageIndex。 stockList 对象有 1 个数组,按照从文件中读取的顺序存储所有 stockObjects。它还包含 sortPercentageIndex 数组。我需要一个 sortByPercentage 方法来按降序对索引数组进行排序。如果有帮助,我可以发布一些代码,但它是一个更大程序的一部分,并且一些类是子类,所以我担心如果不全部看到它就没有意义。
最佳答案
将比较仿函数传递给您的排序函数:
struct comparePercentChanged
{
const double* arr1;
comparePercentChanged( const double* arr1 ): arr1(arr1) { }
bool operator < ( int index1, int index2 ) const
{
return arr1[index1] < arr1[index2];
}
};
std::sort( begin(arr2), end(arr2), comparePercentChanged(arr1) );
或者,您可以使用 lambda:
std::sort( begin(arr2), end(arr2), [const &arr1]( int index1, int index2 ) -> bool
{
return arr1[index1] < arr1[index2];
} );
(这一切都假设 arr2 是一个 int 索引数组。)
关于c++ - 在 C++ 中使用第二个索引数组对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33513010/