Visual studio 2010 在VC++;对数字进行排序?
我有两列数据。比如说, [78,c] [28,a] [34,g]Visual studio 2010 在VC++;对数字进行排序?,visual-studio-2010,c++-cli,Visual Studio 2010,C++ Cli,我有两列数据。比如说, [78,c] [28,a] [34,g] 我想看看是否有任何内置函数来对数字进行排序,并告诉我订单信息。例如,(从小到大)函数将返回[2,3,1],因为第二行的第一列元素最小。您的数据结构是什么 如果您使用的是C++/CLI,那么就可以使用整个.NET框架 也就是说,我不相信有任何内置的东西可以告诉你顺序。我相信一切都会这样 如果你真的需要顺序,而不是一个排序的列表,我相信这可以做到。这将创建新对象,这些对象将记住它们的原始列表位置,对它们进行排序,然后读回原始索引 //
我想看看是否有任何内置函数来对数字进行排序,并告诉我订单信息。例如,(从小到大)函数将返回[2,3,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;
}
//我假设您已经有了类似的类。
参考类MyData
{
公众:
整数;
字符串^字母;
};
ref class SortHelper:i可比较
{
公众:
MyData^数据;
国际原始索引;
排序器(MyData^数据,整数索引)
{
这->数据=数据;
此->originalIndex=索引;
}
虚拟比较器(SortHelper^其他)
{
返回此->数据->编号。比较(其他->数据->编号);
}
};
无效列表GetSortedIndex(列表^input)
{
列表^working=gcnew List();
对于(int i=0;iCount;i++)
{
工作->添加(新排序器(输入[i],i));
}
工作->排序();
列表^result=gcnew List();
对于每个(SortHelper^工作中的助手)
{
结果->添加(助手->原始索引);
}
返回结果;
}