Aquí hay una equivalencia aproximada :
Dictionary<K,V>
< =>unordered_map<K,V>
HashSet<T>
< =>unordered_set<T>
List<T>
< =>vector<T>
LinkedList<T>
< =>list<T>
.NET BCL (biblioteca de clases base) no tiene árboles rojo-negro (stl map) o colas de prioridad (make_heap(), push_heap(), pop_heap()).
. Las colecciones .NET no usan "iteradores" como lo hace C++. Todos implementan IEnumerable<T>
, y se pueden iterar utilizando la instrucción "foreach
". Si desea controlar manualmente la iteración, puede llamar a "GetEnumerator()
" en la colección que devolverá un objeto IEnumerator<T>
. IEnumerator<T>.MoveNext()
es más o menos equivalente a "++" en un iterador de C++, y "Actual" es más o menos equivalente al operador de deferencia de puntero ("*").
C# tiene una característica de idioma llamada "iteradores". Sin embargo, no son lo mismo que "objetos iteradores" en el STL. En cambio, son una función de idioma que permite la implementación automática de IEnumerable<T>
. Consulte la documentación para las declaraciones yield return
y yield break
para obtener más información.
Ha tropezado con lo que probablemente sea la mayor deficiencia en la biblioteca de clase base de .NET ...Faltan muchos contenedores relativamente comunes. Y aunque LINQ hace un trabajo decente reemplazando los iteradores de C++, todavía no es tan flexible (o eficiente) – jalf