Quiero reescribir algún código que usa una gran cantidad de matrices unsigned char
, para hacer uso en cambio de los objetos std::vector<unsigned char>
. El problema que tengo es que estos se usan actualmente para almacenar los datos que se escribirán en un puerto serie o en un buffer de escritura de socket y las funciones de la biblioteca para hacer esto toman void*
o unsigned char*
. Un ejemplo de tal función es¿Puedo llamar a funciones que toman un argumento de matriz/puntero usando un std :: vector en su lugar?
WriteToSocketBuffer(unsigned char* pBuffer, int iSize);
así Actualmente tengo código del formulario
unsigned char* pArray = new unsigned char[iSize];
// populate array with data
WriteToSocketBuffer(pArray,iSize);
delete [] pArray;
Mi pregunta es la siguiente: si cambio de clase para tener un std::vector<unsigned char>
lugar de una matriz prima puede simplemente llamar a mi función de biblioteca utilizando
std::vector<unsigned char> myVector;
WriteToSocketBuffer(&myVector[0],myVector.size());
¿se pasa la dirección del primer elemento en el vector actúan de la misma era como pasar en la dirección del primer elemento de una prima array ¿Es esto simple?
En C++ 11 se puede también use std :: array. –
¿Lo has probado? – KRyan
@DragoonWraith, ¿qué tan difícil sería ayudar? Cosas como permitir la representación no contigua pueden romperlo en general y, sin embargo, tener éxito en las pruebas básicas. – AProgrammer