2012-03-29 2 views
1

У меня есть проект cpp, проект cpp cli и проект создания C# win. У меня есть std :: map в моем родном проекте cpp. Как я могу преобразовать его в .net-диктатор в моем проекте cli?Cpp/Cli Convert std :: map to .net dictionary

+0

Что вы пытаетесь сделать? Как вы пытались это сделать? Как это не сработало? –

+0

Нет, я havent 'пытался. Мне интересно, есть ли простой способ. –

+1

для каждого и Add - самый простой –

ответ

6
//Assuming dictionary of int/int: 
#include <map> 

#pragma managed 

using namespace System::Collections::Generic; 
using namespace std; 

/// <summary> 
/// Converts an STL int map keyed on ints to a Dictionary. 
/// </summary> 
/// <param name="myMap">Pointer to STL map.</param> 
/// <returns>Dictionary of int keyed by an int.</returns> 
/// <exception cref="ArgumentNullException">The <paramref name="myMap"/> parameter was a NULL pointer.  
Dictionary<int, int>^ Convert(map<int, int>* myMap) 
{ 
    if (!myMap) 
    throw gcnew System::ArgumentNullException("myMap"); 

    Dictionary<int, int>^ h_result = gcnew Dictionary<int, int>(myMap->size()); 

    for (pair<int, int> kvp : *myMap) 
    { 
    h_result->Add(kvp.first, kvp.second); 
    } 

    return h_result; 
}