Creo que la biblioteca estándar de C ++ todavía no incluye una lista intrusiva. La densidad de datos es súper importante en ciertas cargas de trabajo; en esos casos, es probable que no desee pagar por un puntero hacia atrás y casi seguro que no quiera pagar una asignación de montón adicional para el frob que probablemente tenga solo tres punteros, uno hacia adelante, uno hacia atrás y uno al artículo
Las colecciones intrusivas están en desacuerdo con la pureza que obtienes de la mayoría de las colecciones (esto también es cierto en los mundos .net, C ++ y Java), que son los patrones de diseño que la comunidad moderna de C ++ se esfuerza por seguir, por lo que la mayoría no son intrusivos colecciones para que la noción de un objeto y su contenedor sean principios ortogonales. Probablemente sea un buen diseño, pero todos estos buenos elementos de diseño tienen costos de rendimiento y almacenamiento. (Esto podría comenzar una guerra, pero lo que pasa con la mentalidad de “evitar la optimización prematura” es que básicamente apuesta a que la característica no será exitosa o importante porque sabe con certeza que si es exitosa e importante, su rendimiento será debajo de una lupa.)
Con todo lo dicho, olvida las listas; es realmente difícil superar una matriz (std :: vector es suficiente) por densidad y rendimiento a menos que vaya a agregar / eliminar a / desde el medio de la lista. Sigo teniendo la intención de hacer un análisis de tiempo, pero sospecho firmemente que las matrices de punteros ganarían tanto las listas intrusivas como las no intrusivas hasta una rodilla interesante en la curva de rendimiento. (Desafortunadamente, una lista de punteros en bruto está fuera de moda ya que tiene una gestión de vida ambigua, por lo que, para encajar, ¿quizás tenga una lista de instancias std :: shared_ptr ? Pero ahora está gravando el objeto con la sobrecarga shared_ptr. Esto a menudo no importa. Hasta que lo haga, mucho).
- ¿Qué piensa Ashish Kedia sobre el libro 'Introducción a los algoritmos de CLRS'? ¿Cómo ha estudiado el libro?
- Dada una matriz con 1s y 0s, necesitamos crear una matriz tal que a [i] [j] = 1, si solo cada elemento en la fila i y columna j es 1, de lo contrario 0. Tenemos que usar un espacio constante y tener Una óptima complejidad temporal. ¿Cuáles son algunas posibles soluciones?
- ¿Cuál es la complejidad del algoritmo criptográfico RSA?
- ¿Cuál es la solución / lógica para el patrón numérico dado?
- ¿Hay algún algoritmo de ordenación que funcione en el orden de n?
std :: vector vs. arrays son un lavado. A menos que sea una matriz de tamaño fijo incrustada en una estructura / clase que contiene, creo que es difícil, especialmente en los tiempos modernos con referencias de valor, etc., señalar cualquier motivo para seguir con las matrices. Pero parece inclinado a hacer lo contrario y no veo ninguna razón masiva para cambiar de matrices a std :: vector si no necesita todas las posibilidades de std :: vector.