在VC ++中是否有任何内置函数来排序数字?

时间:2012-04-27 17:21:41

标签: visual-studio-2010 c++-cli

我有两列数据。例如,

[78,c]

[28,a]

[34,g]

我想查看是否有任何内置函数对数字进行排序并告诉我订单信息。例如,(从小到大)函数将返回[2,3,1],因为第二行具有最小的第一列元素。

1 个答案:

答案 0 :(得分:1)

您的数据结构是什么?

如果您使用的是C ++ / CLI,那么您可以使用整个.NET框架。

那就是说,我不相信有任何内置会告诉你订单。我相信一切都会真正做到这一点。

如果你真的需要订单,而不是排序列表,我相信这样做会。这将创建记住其原始列表位置的新对象,对它们进行排序,然后回读原始索引的内容。

// I'm assuming you have a class similar to this already.
ref class MyData
{
public:
    int number;
    String^ letter;
};

ref class SortHelper : IComparable<SortHelper^>
{
public:
    MyData^ data;
    int originalIndex;

    SortHelper(MyData^ data, int index)
    {
        this->data = data;
        this->originalIndex = index;
    }

    virtual CompareTo(SortHelper^ other)
    {
        return this->data->number.CompareTo(other->data->number);
    }
};

void List<int> GetSortedIndexes(List<MyData>^ input)
{
    List<SortHelper>^ working = gcnew List<SortHelper>();
    for(int i = 0; i < input->Count; i++)
    {
        working->Add(gcnew SortHelper(input[i], i));
    }

    working->Sort();

    List<int>^ result = gcnew List<int>();        
    for each(SortHelper^ helper in working)
    {
        result->Add(helper->originalIndex);
    }

    return result;
}