0

整数ベクトルがある場合

vector<int> vec;

そして私は次のようにループします

for(int i=0; i<vec.size(); i++)
{
   // do something
}

署名付き/未署名の不一致の警告が表示されます。

もちろん、問題を解決するためiに型を宣言できます。size_tしかし、そのままにしておくiint、実行時に問題が発生する可能性がありますか?

4

3 に答える 3

3

iterator代わりにベクトルを使用してください。

vector<int>::iterator it;
for (it = vec.begin(); it!= vec.end(); ++it)
{
   //do something
}
于 2013-03-29T14:25:47.623 に答える
2

はい。signedが格納できる値を超える大きな数値の場合、未定義の動作になります。

ただし、保管できる少数の場合はsigned問題ありません。

于 2013-03-29T14:14:35.540 に答える
2

確かにvec.size()、signed int の最大値よりも大きい場合。

この表limits.hごとに最大値を見つけることができます。

于 2013-03-29T14:13:24.863 に答える