2016-11-20 10 views
0

空のpriority_queueのサイズを取得しようとしました。奇妙なことが起こった。誰がなぜこれが起こったのか説明できましたか?どうもありがとう。C++ priority_queue size()問題

#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; 
} 

出力:

0 18446744073709551615 
+0

あなたの質問は何ですか? –

+0

なぜasc_queue.size() - 1が-1でないのですか? – daydayup

+3

符号なしの値です。符号なしの値には-1はありません。 –

答えて

3

std::priority_queue::size()は、(技術的にプライオリティキューの根底にある容器のsize_typestd::size_tとしてコンテナのサイズを返し、本質的unsigned intある - したがって、1マイナスしようとし空のコンテナサイズから、0xffffffffffffffffLの符号なし10進数表現が得られます。これは、大きな値を得る理由です。

+0

あなたをお待ちしています。ありがとう。 – daydayup

+1

0xffffffffffffffffLの符号なし10進表現を提供します。ここでオーバーフローはありません。 – EJP

+1

@EJPはその後正確に編集されています – ArchbishopOfBanterbury