如果我有一个整数向量
vector<int> vec;
我按以下方式循环
for(int i=0; i<vec.size(); i++)
{
// do something
}
我收到签名/未签名的不匹配警告。
当然,我可以声明类型为i
的{{1}}来解决问题。
但如果我将size_t
保留为i
,我可以在运行时遇到问题吗?
答案 0 :(得分:3)
使用向量iterator
代替。
vector<int>::iterator it;
for (it = vec.begin(); it!= vec.end(); ++it)
{
//do something
}
答案 1 :(得分:2)
当然,如果vec.size()
大于signed int的最大值。
您可以在limits.h
按this table找到最大值。
答案 2 :(得分:2)
是。对于大于signed
可以存储的值的大数,它将是未定义的行为。
但是对于可以存储在signed
中的小数字,可以。