vectores una programacion matriz matrices llenar ejemplos como codigo clase array c++ stl vector

una - vectores en c++ pdf



Convertir std:: vector en matriz (1)

Tengo una biblioteca que espera una matriz y la llena. Me gustaría usar un std :: vector en lugar de usar una matriz. Entonces, en lugar de

int array[256]; object->getArray(array);

Me gustaría hacer:

std::vector<int> array; object->getArray(array);

Pero no puedo encontrar una manera de hacerlo. ¿Hay alguna posibilidad de utilizar std :: vector para esto?

¡Gracias por leer!

EDITAR: Quiero poner una actualización a este problema: estaba jugando con C ++ 11 y encontré un mejor enfoque. La nueva solución es usar la función std :: vector.data () para obtener el puntero al primer elemento. Entonces podemos hacer lo siguiente:

std::vector<int> theVec; object->getArray(theVec.data()); //theVec.data() will pass the pointer to the first element

Si queremos usar un vector con una cantidad fija de elementos, mejor utilizamos el nuevo tipo de datos std :: array en su lugar (por cierto, por este motivo, el nombre de la variable "matriz", que se utilizó en la pregunta anterior, ¡ya no se debe usar! !).

std::array<int, 10> arr; //an array of 10 integer elements arr.assign(1); //set value ''1'' for every element object->getArray(arr.data());

Ambas variantes de código funcionarán correctamente en Visual C ++ 2010. Recuerde: este es el código C ++ 11 por lo que necesitará un compilador que admita las funciones.

La respuesta siguiente sigue siendo válida si no utiliza C ++ 11.


Sí:

std::vector<int> array(256); // resize the buffer to 256 ints object->getArray(&array[0]); // pass address of that buffer

Se garantiza que los elementos en un vector sean contiguos, como una matriz.