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

Mapping between stl C++ and C# containers(stl C++ 和 C# 容器之间的映射)
本文介绍了stl C++ 和 C# 容器之间的映射的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有人能指出常用的 C++ STL 容器(如 vector、list、map、set、multimap...)和 C# 通用容器之间的良好映射吗?

Can someone point out a good mapping between the usual C++ STL containers such as vector, list, map, set, multimap... and the C# generic containers?

我已经习惯了前者,并且不知何故我已经习惯于用这些容器来表达算法.我很难找到与这些等效的 C#.

I'm used to the former ones and somehow I've accustomed myself to express algorithms in terms of those containers. I'm having some hard time finding the C# equivalent to those.

谢谢!

推荐答案

这是一个粗略的等价:

  1. 字典<K,V> <=> unordered_map<K,V>
  2. HashSet<T> <=> unordered_set<T>
  3. 列表<T> <=> 向量<T>
  4. LinkedList<T> <=> list<T>
  1. Dictionary<K,V> <=> unordered_map<K,V>
  2. HashSet<T> <=> unordered_set<T>
  3. List<T> <=> vector<T>
  4. LinkedList<T> <=> list<T>

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

The .NET BCL (base class library) does not have red-black trees (stl map) or priority queues (make_heap(), push_heap(), pop_heap()).

.NET 集合不像 C++ 那样使用迭代器".它们都实现了 IEnumerable<T>,并且可以使用foreach 语句"进行迭代.如果你想手动控制迭代,你可以在集合上调用GetEnumerator()",这将返回一个IEnumerator 对象.IEnumerator.MoveNext() 大致相当于 C++ 迭代器上的++",Current"大致相当于指针引用运算符 (*").

.NET collections don't use "iterators" the way C++ does. They all implement IEnumerable<T>, and can be iterated over using the "foreach statement". If you want to manually control iteration you can call "GetEnumerator()" on the collection which will return an IEnumerator<T> objet. IEnumerator<T>.MoveNext() is roughly equivalent to "++" on a C++ iterator, and "Current" is roughly equivalent to the pointer-deference operator ("*").

C# 确实有一个称为迭代器"的语言特性.但是,它们与 STL 中的迭代器对象"不同.相反,它们是一种允许自动实现 IEnumerable<T> 的语言特性.有关详细信息,请参阅 yield returnyield break 语句的文档.

C# does have a language feature called "iterators". They are not the same as "iterator objects" in the STL, however. Instead, they are a language feature that allows for automatic implementation of IEnumerable<T>. See documentation for the yield return and yield break statements for more information.

这篇关于stl C++ 和 C# 容器之间的映射的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

DispatcherQueue null when trying to update Ui property in ViewModel(尝试更新ViewModel中的Ui属性时DispatcherQueue为空)
Drawing over all windows on multiple monitors(在多个监视器上绘制所有窗口)
Programmatically show the desktop(以编程方式显示桌面)
c# Generic Setlt;Tgt; implementation to access objects by type(按类型访问对象的C#泛型集实现)
InvalidOperationException When using Context Injection in ASP.Net Core(在ASP.NET核心中使用上下文注入时发生InvalidOperationException)
LINQ many-to-many relationship, how to write a correct WHERE clause?(LINQ多对多关系,如何写一个正确的WHERE子句?)