Chcę przepisać niektóre kod, który używa wielu tablic unsigned char
, aby zamiast tego korzystać z obiektów std::vector<unsigned char>
. Problemem jest to, że są one obecnie używane do przechowywania danych, które zostaną zapisane do portu szeregowego lub bufora zapisu gniazda, a funkcje biblioteczne do tego powodują albo void*
lub unsigned char*
. Przykładem takiej funkcji jestCzy mogę wywoływać funkcje, które pobierają argument tablica/wskaźnik używając std :: vector?
WriteToSocketBuffer(unsigned char* pBuffer, int iSize);
więc obecnie mam kodu formularza
unsigned char* pArray = new unsigned char[iSize];
// populate array with data
WriteToSocketBuffer(pArray,iSize);
delete [] pArray;
Moje pytanie jest następujące: Jeżeli mogę zmienić klasę mieć std::vector<unsigned char>
zamiast surowego tablica może po prostu zadzwoń do mojej funkcji biblioteki przy użyciu
std::vector<unsigned char> myVector;
WriteToSocketBuffer(&myVector[0],myVector.size());
Czy przekazując adres pierwszego elementu w akcie wektorowych w taki sam sposób jak przekazując adres pierwszego elementu w surowym tablica. Czy to takie proste?
w C++ 11 można również użyj std :: array. –
Czy próbowałeś? – KRyan
@DragoonWraith, jak próbowanie mogłoby pomóc? Rzeczy takie jak zezwalanie na nieciągłe reprezentacje mogą je ogólnie złamać, a jednak odnieść sukces w podstawowych testach. – AProgrammer