c++ - 从 size_t 转换为 int,还是用 size_t 迭代?

标签 c++

将迭代器条件右操作数从 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;
    }
}

最佳答案

我几乎总是使用第一个变体,因为我发现大约 80% 的时间,我发现 some_func应该也需要一个 size_t。

如果事实上some_func采用带符号的 int,您需要了解当 vect 大于 INT_MAX 时会发生什么.如果解决方案在您的情况下不明显(通常不是),您至少可以替换 some_func((int)i)some_func(numeric_cast<int>(i)) (有关 numeric_cast 的一种实现,请参见 Boost.org)。这样做的好处是当 vect 变得比您计划的大时抛出异常,而不是静静地环绕到负值。

关于c++ - 从 size_t 转换为 int,还是用 size_t 迭代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1267915/

相关文章:

c++ - Rcpp 代码示例 cppFunction

c++ - 需要调用 gtk_init 函数,但不是从主函数调用 - C++

c++ - 如何从其上方定义的类中访问该类?

c++ - 有人在处理 2038 time_t 错误吗?

c++ - 函数重载类设计

c++ - 声明两个使用相同参数的不同方法

c++ - 获取指针属性值

带有初始值设定项的 C++ 匿名类

c++ - 原型(prototype)模式

c++ - while循环跳过Cin