2012-06-20 2 views
1

Я делаю проект C#, и я хочу позвонить next_permutation из библиотеки алгоритмов в C++. Я нашел способ вызова функций C++ в C#, но я не знаю, как получить векторы из C++ и использовать его в C# (для того, чтобы next_permutation требует int vector ...)C++ int vector to C#

Это то, что я пытаюсь в данный момент :

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); 
+1

вам нужен клей для его преобразования. Почему бы просто не сделать это на C#? Google дайте мне это: http://code.google.com/p/monoalgorithm/source/browse/trunk/Algorithm.cs?spec=svn2&r=2#163 –

ответ

1

Единственный способ сделать это через класс оболочки C++/CLI. Однако вам придется преобразовать int [] или List < int> в std :: vector как отдельный проход. Если в векторе, в котором вы проходите, много данных ... это приведет к замедлению SIGNIFICANT.

1

P/Invoke очень плохо для типов C++. Вы должны попытаться упростить свои проблемы в интерфейсе C. В вашем случае это очень просто!

extern void NextPermutation(int *permutation, int count) 
{ 
    next_permutation (permutation, permutation + count); 
}