Das folgende Stück Code kompiliert und läuft gut, aber ich habe gelesen auf reinterpret_cast und ich kann nicht wirklich ausmachen, wenn es Standard-kompatibel und ist tragbar. In meinem Kopf sollte es sein, da wir explizit den zugrunde liegenden Container der priority_queue angeben, aber ich konnte keine direkte Antwort bekommen, sodass SO-Assistenten einen Einblick in dieses Stück haben könnten.Wird reinterpret_cast auf priority_queue durch den zugrunde liegenden Vektor nicht-Standard durchlaufen?
Was es tut, ist im Grunde eine priority_queue erstellen, die mit Ganzzahlen mit einem Vektor beschäftigt. Diese Warteschlange wird dann in einen Vektorzeiger neuinterpretiert, so dass die Elemente der Warteschlange durchlaufen werden können (da die Prioritätswarteschlange diese Funktionalität nicht selbst enthält).
#include <iostream>
#include <vector>
#include <queue>
int main() {
std::priority_queue< int, std::vector<int> > pq;
pq.push(100);
pq.push(32);
pq.push(1);
auto o = reinterpret_cast<std::vector<int> *>(&pq);
for (std::vector<int>::iterator it = (*o).begin(); it != (*o).end(); it++) {
std::cout << (*it) << std::endl;
}
return 0;
}