Каков наиболее эффективный способ преобразования std :: vector в .NET List ?

Каков наиболее эффективный способ преобразования std :: vector в список .NET?

Чтобы дать некоторый контекст, я помещаю неуправляемый класс C ++ с C ++ / CLI. Класс C ++ / CLI содержит указатель на класс C ++, и у меня есть оболочка для каждого общедоступного метода.

Один метод возвращает 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. Предположим, мне просто нужно эффективно перенести этот вектор в управляемый мир в любой форме или форме.

10
задан Deduplicator 11 March 2015 в 00:22
поделиться