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?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…