2016-11-20 1 views
0

Ich versuchte, die Größe einer leeren priority_queue zu erhalten. Etwas Komisches ist passiert. Kann jemand erklären, warum das passiert ist? Danke vielmals.C++ priority_queue size() Problem

#include <iostream> 
#include <queue> 
using namespace std; 

int main() 
{ 
    priority_queue<int, vector<int>, less<int> > asc_queue; 
    cout << asc_queue.size() << " " << asc_queue.size() - 1 << endl; 
} 

Output:

0 18446744073709551615 
+0

Was genau ist Ihre Frage? –

+0

Warum asc_queue.size() - 1 ist nicht -1? – daydayup

+3

Weil es ein vorzeichenloser Wert ist. Es gibt keine -1 für vorzeichenlose Werte. –

Antwort

3

std::priority_queue::size() gibt die Größe des Behälters als std::size_t (technisch size_type des darunterliegenden Behälters der Prioritätsschlange), die im Wesentlichen ein unsigned int - also auf minus Versuch 1 Von einer leeren Containergröße erhalten Sie die vorzeichenlose Dezimalzahl 0xffffffffffffffffL, weshalb Sie den großen Wert erhalten, den Sie sehen.

+0

haben Sie. Vielen Dank. – daydayup

+1

Es gibt Ihnen die vorzeichenlose dezimale Darstellung von 0xffffffffffffffffL. Kein Überlauf hier. – EJP

+1

@EJP bearbeitet für Genauigkeit dann – ArchbishopOfBanterbury