Esto fue discutido en STL eficaz Scott Meyers', que se puede hacer &vec[0]
para obtener la dirección del primer elemento de un std::vector
, y puesto que la norma restringe vectores de tener memoria contigua, puede hacerlo Cosas como esta.
// some function
void doSomething(char *cptr, int n)
{
}
// in your code
std::vector<char> chars;
if (!chars.empty())
{
doSomething(&chars[0], chars.size());
}
edición: De los comentarios (gracias Casablanca)
- ser cautelosos acerca de la celebración de punteros a estos datos, ya que el puntero puede ser invalidado si se modifica el vector.
+1 pero tenga en cuenta que el puntero puede dejar de ser válido si el vector se modifica posteriormente. – casablanca