I want to rewrite some code that uses a lot of unsigned char arrays, to instead make use of std::vector<unsigned char> objects. The problem I have is that these are currently used to store the data that will be written to either a serial port or socket write buffer and the library functions to do this take either void* or unsigned char* . An example of such a function is
WriteToSocketBuffer(unsigned char* pBuffer, int iSize);
so currently I have code of the form
unsigned char* pArray = new unsigned char[iSize];
// populate array with data
WriteToSocketBuffer(pArray,iSize);
delete [] pArray;
My question is the following: If I change my class to have a std::vector<unsigned char> instead of a raw array can I simply call my library function using
std::vector<unsigned char> myVector;
WriteToSocketBuffer(&myVector[0],myVector.size());
Does passing the address of the first element in the vector act in the same was as passing in the address of the first element in a raw array. Is it this simple?
myVectorcontains no elements. You wantstd::vector<unsigned char> myVector(iSize);instead.