Каков наиболее эффективный способ преобразования std::vector в список .NET?
Чтобы дать некоторый контекст, я обматываю неуправляемый класс С++ с помощью С++/CLI. Класс С++/CLI содержит указатель на класс С++, и у меня есть оболочка для каждого публичного метода.
Один метод возвращает std::vector, поэтому в моей обертке я собираюсь вернуть список классов .NET. То есть.
// unmanaged class
class A
{
public:
std::vector<int> runList();
}
// managed class
public ref class A
{
public:
// the below is obviously extremely inefficient
List<UInt32> MethodA()
{
std::vector<unsigned int> runList = mpChannelNode->runList();
std::vector<unsigned int>::iterator itr;
List<UInt32> list = gcnew List<UInt32>();
for (itr = runList.begin(); itr != runList.end(); itr++)
{
list.Add(*itr);
}
return list;
}
private:
A* mpChannelNode;
}
Как я могу сделать это более эффективным? Не стесняйтесь рекомендовать другой тип возврата для класса .NET. Предположим, мне просто нужно получить этот вектор в управляемом мире эффективно в любой форме или форме.