gpt4 book ai didi

c++ - 在 C++ 中使用第二个索引数组对数组进行排序

转载 作者:行者123 更新时间:2023-11-28 05:59:44 25 4
gpt4 key购买 nike

我有一个自定义对象的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com