整数ベクトルがある場合
vector<int> vec;
そして私は次のようにループします
for(int i=0; i<vec.size(); i++)
{
// do something
}
署名付き/未署名の不一致の警告が表示されます。
もちろん、問題を解決するためi
に型を宣言できます。size_t
しかし、そのままにしておくi
とint
、実行時に問題が発生する可能性がありますか?
iterator
代わりにベクトルを使用してください。
vector<int>::iterator it;
for (it = vec.begin(); it!= vec.end(); ++it)
{
//do something
}
はい。signed
が格納できる値を超える大きな数値の場合、未定義の動作になります。
ただし、保管できる少数の場合はsigned
問題ありません。
確かにvec.size()
、signed int の最大値よりも大きい場合。
この表limits.h
ごとに最大値を見つけることができます。