size_t

size_tについて。 STLで、for (int i=0;i<v.size();++i) などと書くと、「signed と unsigned を比較している」と警告が出る。

これは、size_tがunsignedなためだ。これを消すために、iをunsignedにしていたら、バグった。

for (uint i=0;i<v.size()-1;++i)としたときに、size()が0だと、おかしくなる。 size_tがunsignedだと、添え字の範囲チェックで「i>=0 && i<size」が単に「i<size()」で済む。しかし、このようなバグを考えると、size_tはsignedであるべきだ。 CLIではそうなっている。