Avatar ·

Cómo convertir std::vector a un array normal (C-style array) en C++

¡Hola a todos! Estoy escribiendo un programa en C++ y me encontré con un problema. Tengo un std::vector<int> que lleno con datos, pero una de las bibliotecas que uso requiere como entrada un array C normal (int*). ¿Cómo puedo obtener del vector un puntero sin procesar a sus datos internos para pasarlo a la función?

Aquí hay un ejemplo de mi código:

#include <iostream>
#include <vector>

void process_array(int* arr, size_t size) {
    for (size_t i = 0; i < size; ++i) {
        std::cout << arr[i] << " ";
    }
}

int main() {
    std::vector<int> vec = {1, 2, 3, 4, 5};
    
    // ¿Cómo obtener int* de vec?
    // process_array(vec, vec.size()); // ¡Error!
    
    return 0;
}

He oído que existe el método data() y el operador &vec[0]. ¿Cuál es la diferencia? ¿Qué método es más seguro? ¿Y necesito hacer algo con la memoria después de usarlo? ¡Gracias de antemano por la ayuda!

P.D. Sé que se puede simplemente copiar