在向量循环中使用int而不是size_t是否可以?

时间:2013-03-29 14:11:12

标签: c++ warnings unsigned signed

如果我有一个整数向量

vector<int> vec;

我按以下方式循环

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

我收到签名/未签名的不匹配警告。

当然,我可以声明类型为i的{​​{1}}来解决问题。 但如果我将size_t保留为i,我可以在运行时遇到问题吗?

3 个答案:

答案 0 :(得分:3)

使用向量iterator代替。

vector<int>::iterator it;
for (it = vec.begin(); it!= vec.end(); ++it)
{
   //do something
}

答案 1 :(得分:2)

当然,如果vec.size()大于signed int的最大值。

您可以在limits.hthis table找到最大值。

答案 2 :(得分:2)

是。对于大于signed可以存储的值的大数,它将是未定义的行为。

但是对于可以存储在signed中的小数字,可以。