c++ - size_t vs int 警告

标签 c++ visual-c++ stl

对于以下类型的代码,我总是收到以下警告。

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/

相关文章:

c++ - vfptr 中的 Visual C++ 方法以相反的顺序

c++ - VC++ 允许为 STL 容器使用 const 类型。为什么?

c++ - 错误 C2440 : '=' : cannot convert from 'div_t' to 'double'

c++ - 表达式模板 - bad_alloc

c++ - 将 long 转换为 wchar_t *

c++ - 如何在 VC++ 2010 中将 stdext::hash_set 用于自定义类型?

c++ - 根据标志在最小堆和最大堆之间切换

c++ - 如何调用另一个类的静态方法

c++ - xcode: 我在哪里可以设置这个链接器标志 '-v' ?

c++ - 与托管语言相比,使用 C++ 开发应用程序有哪些优势?