1

私は C# プロジェクトを行っておりnext_permutation、C++ のアルゴリズム ライブラリから呼び出したいと考えています。c# で c++ 関数を呼び出す方法を見つけましたが、c++ からベクトルを取得して c# で使用する方法がわかりません (next_permutation には int ベクトルが必要なため...)

これは私が現在試していることです:

extern void NextPermutation(vector<int>& permutation) 
{
    next_permutation (permutation.begin(),permutation.end()); 
}

[DllImport("PEDLL.dll", CallingConvention = CallingConvention.Cdecl)]
        private static extern void NextPermutation(IntPtr test);
4

2 に答える 2

1

これを行う唯一の方法は、C++/CLI ラッパー クラスを使用することです。ただし、別のパスとして int[] または List< int > を std::vector に変換する必要があります。渡すベクトルに大量のデータがある場合は、大幅な速度低下が発生します。

于 2012-06-20T21:11:45.770 に答える
1

P/Invoke は、C++ 型には非常に適していません。問題を C インターフェースに単純化するようにしてください。あなたの場合、これはとても簡単です!

extern void NextPermutation(int *permutation, int count) 
{
    next_permutation (permutation, permutation + count); 
}
于 2012-06-20T21:12:05.323 に答える