是否更好地将迭代器条件从右操作数转换size_t为int,或者迭代可能超过最大值int?答案实施是否具体?
int a;
for (size_t i = 0; i < vect.size(); i++)
{
if (some_func((int)i))
{
a = (int)i;
}
}
int a;
for (int i = 0; i < (int)vect.size(); i++)
{
if (some_func(i))
{
a = i;
}
}
Run Code Online (Sandbox Code Playgroud)
我几乎总是使用第一个变体,因为我发现大约80%的时间,我发现some_func应该也可以使用size_t.
如果实际上some_func需要一个signed int,你需要知道当vect变大时会发生什么INT_MAX.如果解决方案是不是在您的情况明显(通常是没有),你至少可以代替some_func((int)i)用some_func(numeric_cast<int>(i))(见Boost.org一个实施numeric_cast的).当vect比你计划的更大时,它具有抛出异常的优点,而不是默默地回绕到负值.
| 归档时间: |
|
| 查看次数: |
15120 次 |
| 最近记录: |