Ich verwende eine externe Bibliothek, die mir irgendwann einen unformatierten Zeiger auf ein Array von Ganzzahlen und eine Größe gibt.
Jetzt möchte ich auf std::vectordiese Werte zugreifen und sie ändern, anstatt mit rohen Zeigern darauf zuzugreifen.
Hier ist ein künstliches Beispiel, das den Punkt erklärt:
size_t size = 0;
int * data = get_data_from_library(size); // raw data from library {5,3,2,1,4}, size gets filled in
std::vector<int> v = ????; // pseudo vector to be used to access the raw data
std::sort(v.begin(), v.end()); // sort raw data in place
for (int i = 0; i < 5; i++)
{
std::cout << data[i] << "\n"; // display sorted raw data
}
Erwartete Ausgabe:
1
2
3
4
5
Der Grund ist, dass ich Algorithmen aus <algorithm>(Sortieren, Austauschen von Elementen usw.) auf diese Daten anwenden muss .
Auf der anderen Seite würde die Größe dieses Vektors ändert nie, so geändert werden push_back, erase, insertnicht auf diesem Vektor zur Arbeit benötigt.
Ich könnte einen Vektor basierend auf den Daten aus der Bibliothek erstellen, diesen Vektor ändern und die Daten zurück in die Bibliothek kopieren, aber das wären zwei vollständige Kopien, die ich vermeiden möchte, da der Datensatz sehr groß sein könnte.
std::vectorfunktioniert das nicht .
sort(arrayPointer, arrayPointer + elementCount);.
std::vector_view, nicht wahr?