Cpp/Cli 将 std::map 转换为 .net 字典

Posted

技术标签:

【中文标题】Cpp/Cli 将 std::map 转换为 .net 字典【英文标题】:Cpp/Cli Convert std::map to .net dictionary 【发布时间】:2012-03-29 07:32:42 【问题描述】:

我有一个 cpp 项目、一个 cpp cli 项目和一个 c# win forms 项目。我的原生 cpp 项目中有一个 std::map 。如何在我的 cli 项目中将其转换为 .net 字典?

【问题讨论】:

你想做什么?你是如何尝试的?怎么没用? 不,我没试过。我想知道是否有一个简单的方法。 【参考方案1】:
//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;

【讨论】:

以上是关于Cpp/Cli 将 std::map 转换为 .net 字典的主要内容,如果未能解决你的问题,请参考以下文章

将 JNI -> jobject(基本上是映射和/或 java 文件中的映射)转换为 std::map(c++)

将 C++ 类转换为 JSON

std::map 到 std::list 导致 SIGSEGV

如何根据 std::map 的值获取前 n 个键?

将 std::map 对象传递给线程

在地图中存储标准地图