Tamflexの貯蔵庫

やる気のない備忘録

vector<int>::size_typeについて

c++vectorのsize()を使うときに注意すること.

using namespace std;

int main()
{
  vector<int> a(5);
  cout << 4-a.size() << endl;
  return 0;
}

このプログラムの出力は-1ではなく以下のようになる.

18446744073709551615

原因はsize()の返り値がunsigned intであるため-1が64bit環境だと2^64-1になるから.
http://www.cplusplus.com/reference/vector/vector/size/