C のベクトル サイズについて
C では、ベクトル データ構造は、要素が追加されると自動的にサイズを調整できる動的配列です。または削除されました。ただし、ベクトルを操作する場合、ベクトルが空のときの size() の動作を理解することが不可欠です。
空のベクトルに対して size() - 1 が -1 ではない理由
提供されたコード スニペットを考えてみましょう:
#include <vector> #include <iostream> using namespace std; int main() { vector<int> value; cout << value.size() << endl; // output 0 cout << value.size() - 1 << endl; // output 18446744073709551615 }
最初の出力 0 は、次の数を正しく表します。空のベクトル内の要素。ただし、サイズから 1 を減算する 2 番目の出力は、-1 ではなく大きな符号なし整数を返すため、予期せぬものになります。
この動作の背後にある理由は、vector::size で使用される size_t の型にあります。 ()。 size_t は、ベクトル内の要素数を格納するために設計された符号なし整数型です。符号なし整数は負の数を表現できないため、0 から 1 を減算しようとすると、大きな符号なし整数値が生成されます。
結論
size_t は次のとおりであることを覚えておくことが重要です。符号なし型であり、負の数を表すことはできません。ベクトルを扱うときは、空のベクトルのサイズから 1 を減算するときに、大きな符号なし整数値が発生する可能性を常に考慮してください。
以上がC の空ベクトルに対して `vector.size() - 1` が -1 を返さないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。