2012-03-29 4 views
1

Ich habe ein cpp-Projekt, ein cpp cli-Projekt und ein C# Win-Formulare-Projekt. Ich habe eine std :: map in meinem nativen cpp-Projekt. Wie kann ich es konvertieren in .net diktionary in meinem cli-Projekt?Cpp/Cli Convert std :: Karte zu. NET-Wörterbuch

+0

Was versuchen Sie zu tun? Wie hast du es versucht? Wie hat es nicht funktioniert? –

+0

Nein, ich habe es nicht versucht. Ich frage mich, ob es einen einfachen Weg gibt. –

+1

für jeden und Add ist am einfachsten –

Antwort

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; 
}