Avatar ·

Wie konvertiert man std::vector in ein normales Array (C-style array) in C++?

Hallo zusammen! Ich schreibe ein Programm in C++ und bin auf ein Problem gestoßen. Ich habe einen std::vector<int>, den ich mit Daten fülle, aber eine der Bibliotheken, die ich verwende, erwartet ein normales C-Array (int*). Wie bekomme ich aus dem Vektor einen rohen Zeiger auf seine internen Daten, um ihn an die Funktion zu übergeben?

Hier ist ein Beispiel meines Codes:

#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};
    
    // Wie bekomme ich int* aus vec?
    // process_array(vec, vec.size()); // Fehler!
    
    return 0;
}

Ich habe gehört, dass es die Methode data() und den Operator &vec[0] gibt. Was ist der Unterschied? Welche Methode ist sicherer? Und muss ich nach der Verwendung etwas mit dem Speicher tun? Vielen Dank im Voraus für die Hilfe!

P.S. Ich weiß, dass