C# 我怎么写这个c++;用C编写的代码片段#

C# 我怎么写这个c++;用C编写的代码片段#,c#,C#,请参阅C++中的以下代码: unordered_map<int, vector<int>> indexes; for (int i = 0; i < n; i++){ int tmp = 1; indexes[tmp].push_back(i); } vector<int>v = indexes[i]; 无序映射索引; 对于(int i=0;i p>代码> PurpSuffe在vector结尾添加一个新元素,它类似于代码> .c中添加<

请参阅C++中的以下代码:

unordered_map<int, vector<int>> indexes;
for (int i = 0; i < n; i++){
    int tmp = 1;
    indexes[tmp].push_back(i);
}
vector<int>v = indexes[i];
无序映射索引;
对于(int i=0;i
我怎么用C写这个?到目前为止,我写了以下内容:

Dictionary<int, List<int>> indexes = new Dictionary<int, List<int>>();
for(int i=0;i<n;i++){
   int tmp = 1;
   indexes.Add(tmp,new List<int>(i));
}           
List<int> v = new List<int>(indexes[i]);
字典索引=新字典();

对于(int i=0;i> p>代码> PurpSuffe<代码>在vector结尾添加一个新元素,它类似于<>代码> .c中添加< /Cuff>。尽管在C++中,可以直接将代码“代码> PursBuffe<代码>一个项目,但必须先创建一个新的<代码>列表<代码>,然后在C中添加内容:

var list=newlist();
列表.添加(i);
添加(tmp,列表);
这可以使用集合初始值设定项缩短:

indexes.Add(tmp, new List<int> { i });
index.Add(tmp,新列表{i});

您只想在循环之外创建一次新列表。然后使用v.Add(索引[i]);
var v=new List();for(int i=0;i
1)如果您想使用
tmp
作为
字典中的键,您必须更改它!它将不允许您使用同一个键两次。2) 您的错误消息与您发布的代码无关。它抱怨您正在使用
列表。添加
方法。但我在你的代码里看不到。那么这里的真相是什么?信息还是代码?当我使用您的代码时,我得到的唯一编译器错误是,
I
未在此行的作用域中声明:
List v=new List(index[I])。其他一切都应该很好。我投票结束这个问题,因为错误和代码没有关系。这使得问题无法重现。它是否编译?当然,<代码> i <代码>在最后一行(C++和C语言)中是否超出了范围?
indexes.Add(tmp, new List<int> { i });