¿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 <> GroupBy 2 Valora
- 6. C# List <> Add() método rendimiento
- 7. Intentando comprender el procedimiento de enlace para escribir Python/C++ hybrid
- 8. Hybrid server-side-java y client-side-javascript charting library?
- 9. List.empty vs. List() vs. new List()
- 10. C# Casting a List <ObjBase> como List <Obj>
- 11. Python list issue
- 12. Mathematica Dynamic List Manipulation
- 13. boost :: python :: list length
- 14. comando Cmake list-get
- 15. Polimorfismo: ¿Por qué usar "List list = new ArrayList" en lugar de "ArrayList list = new ArrayList"?
- 16. ¿Cuál es la diferencia entre list [-1:] [0] y list [len (list) -1]?
- 17. C# List <T> Contiene la prueba
- 18. C# List <> Ordena por x then y
- 19. Convierte contenidos de DataGridView a List en C#
- 20. C# List <> Ordenar por/Agrupar por/Eliminar
- 21. C# List <T> .ConvertAll en .NET 2.0
- 22. C# List <> Ordene con 3 propiedades .Net 2.0
- 23. List <> elementos con C# utilizando LINQ
- 24. ¿Por qué C++ std :: list :: clear() no llama a destructores?
- 25. ¿Cuál es la diferencia entre list y list [:] en python?
- 26. Render delimited list in XAML?
- 27. Python numpy array vs list
- 28. Asp.net Request.Browser.Crawler - Dynamic Crawler List?
- 29. Boost Intrusive List hook
- 30. .NET Casting Generic 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. –