Cómo crear una matriz dinámica de enteros en C++ utilizando la palabra clave new
?Cómo crear una matriz dinámica de enteros
Respuesta
int main()
{
int size;
std::cin >> size;
int *array = new int[size];
delete [] array;
return 0;
}
No se olvide de delete
cada matriz se puede asignar con new
.
No lo haré -1, pero si posiblemente puede olvidarse de 'borrar', su código es incorrecto. – GManNickG
int* array = new int[size];
Correcto, pero es una mala práctica.:/ – GManNickG
Simplemente responde la pregunta. –
@GManNickG ¿Porque el vector puede ser más conveniente o por otras razones? Porque a menudo encuentro funciones de terceros que requieren el uso de matrices en lugar de vectores. –
Es posible que desee considerar el uso de la Biblioteca de plantillas estándar. Es simple y fácil de usar, además de que no tiene que preocuparse por las asignaciones de memoria.
http://www.cplusplus.com/reference/stl/vector/vector/
int size = 5; // declare the size of the vector
vector<int> myvector(size, 0); // create a vector to hold "size" int's
// all initialized to zero
myvector[0] = 1234; // assign values like a c++ array
Ok, pero responder la pregunta real también es bueno. –
@Ed, la restricción en la pregunta parece bastante arbitraria. 'std :: vector' con el constructor apropiado funciona muy bien y debe señalarse como una alternativa. A veces la gente hace la pregunta mal, y esto podría contar como uno de esos casos, es muy breve y no da ninguna razón para preferir 'nuevo'. –
@Ed: no hay ninguna razón para usar 'new []' en lugar de 'std :: vector'. – GManNickG
Desde C++ 11, hay una alternativa segura a new[]
y delete[]
que es cero-overhead diferencia std::vector
:
std::unique_ptr<int[]> array(new int[size]);
En C++ 14:
auto array = std::make_unique<int[]>(size);
Ambas cosas se basan en el mismo hea der file, #include <memory>
Tan pronto como la pregunta es acerca de la matriz dinámica, es posible que desee no solo crear la matriz con tamaño variable, sino también cambiar su tamaño durante el tiempo de ejecución. Aquí hay un ejemplo con memcpy
, también puede usar memcpy_s
o std::copy
. Dependiendo del compilador, es posible que se requiera <memory.h>
o <string.h>
. Al utilizar estas funciones, asigna una nueva región de memoria, copia los valores de las regiones de memoria originales en ella y luego libéralas.
// create desired array dynamically
size_t length;
length = 100; //for example
int *array = new int[length];
// now let's change is's size - e.g. add 50 new elements
size_t added = 50;
int *added_array = new int[added];
/*
somehow set values to given arrays
*/
// add elements to array
int* temp = new int[length + added];
memcpy(temp, array, length * sizeof(int));
memcpy(temp + length, added_array, added * sizeof(int));
delete[] array;
array = temp;
Puede usar la constante 4 en lugar de sizeof(int)
.
- 1. Cómo crear una matriz dinámica
- 2. ¿Cómo crear una matriz dinámica de una clase abstracta?
- 3. ¿Cómo crear una matriz con secuencia de enteros en C#?
- 4. ¿Cómo crear una matriz de enteros en Python?
- 5. ¿Cómo crear una matriz de funciones de forma dinámica?
- 6. javascript - Crear matriz dinámica simple
- 7. ¿Cómo puedo crear una matriz de longitud dinámica bidimensional?
- 8. Crear una matriz de similitud de números enteros, usando R
- 9. Interlocked.Increment una matriz de enteros
- 10. Crea una matriz multidimensional dinámica
- 11. Cómo rotar una matriz 2D de enteros
- 12. ¿Cómo inicializar una matriz dinámica en C++?
- 13. C++ valor inicial de la matriz dinámica
- 14. Crear una imagen PNG dinámica
- 15. ¿Cuál es el diseño de memoria de una matriz dinámica Delphi de una matriz dinámica de X?
- 16. Cómo crear una tabla dinámica en VBA
- 17. Cómo crear una vista dinámica en OpenERP
- 18. Asignación dinámica de una matriz de estructuras
- 19. ¿Cómo crear una matriz de cadenas dinámica si no conocemos el número de cadenas al principio?
- 20. Crear una tabla dinámica desde una DataTable
- 21. Cómo definir duro en código de una matriz de enteros [] []
- 22. JavaScript - Ordena una matriz basada en otra matriz de enteros
- 23. teclas matriz dinámica
- 24. Cómo resumir una matriz de enteros en C#
- 25. Cómo copiar una matriz de enteros a otra
- 26. ¿Cómo convertir esta cadena a una matriz de enteros?
- 27. ¿Cómo puedo almacenar una matriz de enteros en SharedPreferences?
- 28. ¿Puede una matriz contener enteros y flotantes?
- 29. Creación de una matriz de enteros en iOS
- 30. cómo crear una tabla dinámica con una columna dinámica utilizando la expresión de árbol linq
Utiliza un 'std :: vector'. Y [un libro] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list). –
GManNickG
¿cómo se asignan y acceden sus datos una vez que se inicializan? –
Echa un vistazo a esta publicación, aquí se detalla para cada tipo de tipo de datos: http://programmingtunes.com/dynamic-array-in-c/ – user2808359