我有两列数据。例如,
[78,c]
[28,a]
[34,g]
我想查看是否有任何内置函数对数字进行排序并告诉我订单信息。例如,(从小到大)函数将返回[2,3,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;
}