CLI/C++中的二维字典
Two dimensional dictionary in CLI/C++
我正在尝试使用编程语言 CLI/C++ 将数据存储在二维字典中。
但是,我在向其中添加内容时遇到问题。
这是我在 C# 中的尝试:
Dictionary<int, Dictionary<int, string>> MyDictionary;
if (!MyDictionary.ContainsKey(100))
MyDictionary.Add(100, new Dictionary<int, string>());
MyDictionary[100][1234] = "Hello World";
现在 - 我的 CLI/C++ 尝试:
Dictionary<int, Dictionary<int, String^>^>^ MyDictionary = gcnew Dictionary<int, Dictionary<int, String^>^>();
//ContainsKey check here
MyDictionary[100][1234] = "Hello World"; //<--- ERROR
MyDictionary[100, 1234] = "Hello World"; //<--- ERROR
您似乎没有使用 [][] 在词典中添加内容。我看到人们使用 [100, 1234] 而不是 [100][1234] 但这也不起作用。
错误:
function "System::Collections::Generic::Dictionary<TKey, TValue>::default[TKey]::set [with TKey=int, TValue=System::Collections::Generic::Dictionary<int, String ^> ^]" cannot be called with the given argument list
argument types are: (int, int, String^)
object type is: System::Collections::Generic::Dictionary<int, System::Collections::Generic::Dictionary<int, String ^> ^> ^
我做错了什么?
你没有做错任何事。请注意,代码编译得很好。这是 IntelliSense 解析器中的错误。它有几个,EDG 前端最初是为解析 C++ 而设计的,当它需要处理 C++/CLI 代码时并不是完全没有错误。
您可能不想忽略这些错误诊断,它们非常烦人。最不痛苦的解决方法是:
auto item = MyDictionary[100];
item[1234] = "Hello World";
优化器完成后速度没有差异。
我正在尝试使用编程语言 CLI/C++ 将数据存储在二维字典中。
但是,我在向其中添加内容时遇到问题。
这是我在 C# 中的尝试:
Dictionary<int, Dictionary<int, string>> MyDictionary;
if (!MyDictionary.ContainsKey(100))
MyDictionary.Add(100, new Dictionary<int, string>());
MyDictionary[100][1234] = "Hello World";
现在 - 我的 CLI/C++ 尝试:
Dictionary<int, Dictionary<int, String^>^>^ MyDictionary = gcnew Dictionary<int, Dictionary<int, String^>^>();
//ContainsKey check here
MyDictionary[100][1234] = "Hello World"; //<--- ERROR
MyDictionary[100, 1234] = "Hello World"; //<--- ERROR
您似乎没有使用 [][] 在词典中添加内容。我看到人们使用 [100, 1234] 而不是 [100][1234] 但这也不起作用。
错误:
function "System::Collections::Generic::Dictionary<TKey, TValue>::default[TKey]::set [with TKey=int, TValue=System::Collections::Generic::Dictionary<int, String ^> ^]" cannot be called with the given argument list
argument types are: (int, int, String^)
object type is: System::Collections::Generic::Dictionary<int, System::Collections::Generic::Dictionary<int, String ^> ^> ^
我做错了什么?
你没有做错任何事。请注意,代码编译得很好。这是 IntelliSense 解析器中的错误。它有几个,EDG 前端最初是为解析 C++ 而设计的,当它需要处理 C++/CLI 代码时并不是完全没有错误。
您可能不想忽略这些错误诊断,它们非常烦人。最不痛苦的解决方法是:
auto item = MyDictionary[100];
item[1234] = "Hello World";
优化器完成后速度没有差异。