tat*_*ato 15 c# c++ containers stl
有人能指出通常的C++ STL容器之间的良好映射,例如vector,list,map,set,multimap ......和C#generic容器?
我已经习惯了以前的那些,不知怎的,我习惯于用这些容器来表达算法.我很难找到与之相当的C#.
谢谢!
Sco*_*ski 21
这是一个粗略的等价:
Dictionary<K,V> <=> unordered_map<K,V>HashSet<T> <=> unordered_set<T>List<T> <=> vector<T>LinkedList<T> <=> list<T>.NET BCL(基类库)没有红黑树(stl map)或优先级队列(make_heap(),push_heap(),pop_heap()).
.NET集合不像C++那样使用"迭代器".它们都实现IEnumerable<T>,并且可以使用" foreach语句" 进行迭代.如果要手动控制迭代,可以GetEnumerator()在将返回IEnumerator<T>对象的集合上调用" " .IEnumerator<T>.MoveNext()在C++迭代器上大致相当于"++",而"Current"大致相当于指针 - 引用运算符("*").
C#确实有一个名为"iterators"的语言功能.但是,它们与STL中的"迭代器对象"不同.相反,它们是一种允许自动实现的语言功能IEnumerable<T>.有关更多信息,请参阅yield return和yield break语句的文档.