使用 int 而不是 size_t 索引来访问向量元素会降低性能吗?

Any performance reduction to use int instead of size_t index to access vector elements?

如果我使用int索引访问一个向量元素,它会把整数转换成size_t,然后调用operator[](size_t)函数吗?有没有性能下降?

这取决于 - size_t 取决于平台。

另请参阅:What's the difference between size_t and int in C++?

intsize_t的主要区别在于int是有符号的,而size_t是无符号的。另外,两者可能大小不同,因为这两种类型都是平台特定的,相互独立。

当两个大小相同时,从 intsize_t 的转换是空操作,因此没有性能影响。

当大小不同时,编译器足够聪明,可以将 int 索引的部分或扩展值传递到 operator [] 中,几乎没有开销 size_t,因为缩小了大小需要部分加载,而扩展大小需要为上部加载零。但是请注意,为扩展值的上部写入零并不是一个额外的操作,因为它 替换 size_t 类型的索引复制上部。

因此,答案是否定的,您不会看到任何性能差异。