Вот грубая эквивалентность:
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 # есть языковая функция, которая называется "итераторы". Однако они не совпадают с «объектами итераторов» в STL. Вместо этого они являются языковой функцией, которая позволяет автоматически реализовать IEnumerable<T>
. См. Документацию для операторов yield return
и yield break
для получения дополнительной информации.