2012-04-27 8 views

答えて

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; 
} 
関連する問題