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.