このコードをWindowsでコンパイルすると、警告がスローされます。解決策はありますか?
#include<vector>
int main(){
std::vector<int> v;
//...
for (int i = 0; i < v.size(); ++i) { //warning on this line
//...
}
}
_int i
_のすべての定義を_size_t i
_に置き換えます。
std::vector<T>::size()
は、符号なしの型_size_t
_を返します(コンテナが負の数の要素を含むことは意味がないため)。
いう std::size_t i = 0;
:
for (std::size_t i = 0; i != v.size(); ++i) { /* ... */ }
代わりにイテレータを使用して、警告の可能性を完全に回避することもできます。
for (std::vector<int>::const_iterator i = v.begin(); i != v.end(); ++i)
{
...
}
または、C++ 11を使用している場合:
for (int i : v)
{
...
}