对于以下类型的代码,我总是收到以下警告。
std::vector v;
for ( int i = 0; i < v.size(); i++) {
}
警告 C4267: 'initializing' : 从 'size_t' 转换为 'int',可能丢失数据
我知道 size()
返回 size_t
,只是想知道忽略此警告是否安全,或者我应该将所有循环变量设为 size_t
最佳答案
如果您可能需要持有超过 INT_MAX
vector 中的项目,使用 size_t
.在大多数情况下,这并不重要,但我使用 size_t
只是为了让警告消失。
更好的是,使用迭代器:
for( auto it = v.begin(); it != v.end(); ++it )
(如果您的编译器不支持 C++11,请使用 std::vector<whatever>::iterator
代替 auto
)
C++11 还使选择最佳索引类型变得更容易(如果您在某些计算中使用索引,而不仅仅是用于下标 v
):
for( decltype(v.size()) i = 0; i < v.size(); ++i )
关于c++ - size_t vs int 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6578048/