遍历std::vector:unsigned vs signed索引——该选哪个?
大家好!我最近开始学习C++,在遍历`std::vector`时遇到了一个问题。当我写循环时,我通常使用`int i`,但编译器(GCC)会发出关于signed和unsigned比较的警告。下面是一个例子:
```cpp
#include
#include
int main() {
std::vector vec = {1, 2, 3, 4, 5};
for (int i = 0; i < vec.size(); ++i) { // 警告:signed/unsigned比较
std::cout << vec[i] << " ";
}
return 0;
}
```
警告:`warning: comparison between signed and unsigned integer expressions [-Wsign-compare]`。
我明白`vec.size()`返回`size_t`(unsigned),而我的`i`是`int`(signed)。如果我把`int`改成`size_t`或`unsigned int`,警告就消失了。但这样一来,在反向循环中我就不能使用`i >= 0`,因为`size_t`永远不会是负数,循环会变成无限循环。
问题:遍历vector时,最好使用什么类型作为索引?应该