¿Hay un contenedor estándar en C++ que actúe como un híbrido entre un vector y una lista vinculada? Lo que quiero decir es una estructura de datos que supera la sobrecarga de reasignación frecuente de std :: vector y la posible asignación de exceso de memoria; en cambio, cuando la estructura se queda sin espacio, agrega un puntero al siguiente fragmento asignado y solo cuando llega el número de fragmentos un cierto valor, la estructura completa se des-fragmenta en un trozo nuevo continuo y el número de fragmentos se establece en 0.C++ vector/linked list hybrid
Respuesta
std::deque
es el contenedor estándar más cercano a lo que usted describe. No es exactamente de esta manera, sin embargo (por ejemplo, tiene que ser una matriz de matrices en lugar de una lista de matrices, ya que este último no permitiría el acceso a elementos a tiempo constante).
Dependiendo de sus requisitos prácticos, podría ser lo suficientemente cerca.
Así que básicamente puedo usar un deque y simplemente agregar las pocas líneas de código que necesito para desfragmentarlo una vez que se alcanza un cierto nivel de fragmentos. La idea es, naturalmente, eliminar saltos de memoria y errores de caché ... – dtech
Como ya se dijo, std::deque
se acerca a sus requisitos. Solo quiero agregar esta comparación entre std::vector
y std::deque
que encontré muy útil. An In-Depth Study of the STL Deque Container
- 1. WPF/Console Hybrid Application
- 2. C++ list/vector help
- 3. Cómo Hybrid Mysql y MongoDB en Django
- 4. List Data Structure C# Efficiency
- 5. C# List <> Add() método rendimiento
- 6. The Definitive C Book Guide and List
- 7. C# List <> GroupBy 2 Valora
- 8. Intentando comprender el procedimiento de enlace para escribir Python/C++ hybrid
- 9. Hybrid server-side-java y client-side-javascript charting library?
- 10. List.empty vs. List() vs. new List()
- 11. C# Casting a List <ObjBase> como List <Obj>
- 12. Python list issue
- 13. Mathematica Dynamic List Manipulation
- 14. comando Cmake list-get
- 15. boost :: python :: list length
- 16. ¿Cuál es la diferencia entre list [-1:] [0] y list [len (list) -1]?
- 17. Polimorfismo: ¿Por qué usar "List list = new ArrayList" en lugar de "ArrayList list = new ArrayList"?
- 18. C# List <> Ordena por x then y
- 19. C# List <> Ordenar por/Agrupar por/Eliminar
- 20. C# List <> Ordene con 3 propiedades .Net 2.0
- 21. C# List <T> Contiene la prueba
- 22. C# List <T> .ConvertAll en .NET 2.0
- 23. List <> elementos con C# utilizando LINQ
- 24. Convierte contenidos de DataGridView a List en C#
- 25. ¿Por qué C++ std :: list :: clear() no llama a destructores?
- 26. ¿Cuál es la diferencia entre list y list [:] en python?
- 27. Render delimited list in XAML?
- 28. Python numpy array vs list
- 29. Asp.net Request.Browser.Crawler - Dynamic Crawler List?
- 30. cakephp find list
¿Has echado un vistazo a 'std :: deque'? ¿Se ajusta a tus necesidades? – Asha
Creo que 'std :: deque' funciona de esa manera, pero no estoy seguro. – Constantinius
@Constantinius Siempre pensé que 'std :: deque' era solo una especie de ringbuffer y por lo tanto similar a un' std :: vector' en su comportamiento de asignación de memoria. –