Ответ 1
Здесь грубая эквивалентность:
-
Dictionary<K,V>
<= >unordered_map<K,V>
-
HashSet<T>
<= >unordered_set<T>
-
List<T>
<= >vector<T>
-
LinkedList<T>
<= >List<T>
.NET BCL (библиотека базового класса) не имеет красно-черных деревьев (stl-карта) или очередей приоритетов (make_heap(), push_heap(), pop_heap()).
Сборники .NET не используют "итераторы", как это делает С++. Все они реализуют IEnumerable<T>
и могут быть повторены с использованием инструкции <foreach
. Если вы хотите вручную управлять итерацией, вы можете вызвать "GetEnumerator()
" в коллекции, которая вернет объект IEnumerator<T>
. IEnumerator<T>.MoveNext()
примерно эквивалентен "++" на итераторе С++, а "Текущий" примерно эквивалентен оператору-указателю-указателю ( "*" ).
У С# есть языковая функция, называемая итераторами. Однако они не совпадают с "объектами итератора" в STL. Вместо этого они являются языковой функцией, которая позволяет выполнять автоматическую реализацию IEnumerable<T>
. Дополнительную информацию см. В документации для операторов yield return
и yield break
.