stl C ++和C#容器之间的映射

有人能指出通常的C ++ STL容器之间的良好映射,例如vector,list,map,set,multimap ……和C#generic容器?

我习惯了以前的那些,不知怎的,我已经习惯用这些容器来表达算法。 我很难找到与之相当的C#。

谢谢!

这是一个粗略的等价:

  1. Dictionary <=> unordered_map
  2. HashSet <=> unordered_set
  3. List <=> vector
  4. LinkedList <=> list

.NET BCL(基类库)没有红黑树(stl map)或优先级队列(make_heap(),push_heap(),pop_heap())。

.NET集合不像C ++那样使用“迭代器”。 它们都实现了IEnumerable ,并且可以使用“ foreach语句”进行迭代。 如果要手动控制迭代,可以在集合上调用“ GetEnumerator() ”,该集合将返回IEnumerator对象。 IEnumerator.MoveNext()在C ++迭代器上大致相当于“++”,而“Current”大致相当于指针参照运算符(“*”)。

C#确实有一个名为“iterators”的语言function。 但它们与STL中的“迭代器对象”不同。 相反,它们是一种语言function,允许自动实现IEnumerable 。 有关更多信息,请参阅yield returnyield break语句的文档。

您可能还想看一下STL / CLR

…是标准模板库(STL)的一个包,它是标准C ++库的一个子集,用于C ++和.NET Framework公共语言运行库(CLR)。 使用STL / CLR,您可以在托管环境中使用STL的所有容器,迭代器和算法。

另外,请记住,您可以使用/ clr标志编译现有的C ++ / STL代码。

这个SorceForge项目看起来像是一个有趣的资源, 可以满足您的需求。

没有一个很棒的直接映射,因为例如C ++ set和map使用比较器,而.Net HashSet和Dictionary使用哈希码。