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

时间:2015-12-03 13:08:23

标签: c++ vector int size-t

如果我使用int索引来访问向量元素,它会将整数转换为size_t,然后调用operator[](size_t)函数吗?是否有任何性能降低?

2 个答案:

答案 0 :(得分:5)

intsize_t之间的主要区别在于int已签名,而size_t未签名。此外,两者可能具有不同的大小,因为这两种类型都是特定于平台的并且彼此独立。

如果两种尺寸相同,则从intsize_t的转换为无操作,因此不存在性能影响。

当大小不同时,编译器足够智能,可以将int索引的部分或扩展值传递到operator [],而size_t几乎没有任何开销,因为缩小大小需要部分负载,同时扩大尺寸需要为上部加载零。但请注意,为扩展值的上半部分写入零不是附加操作,因为它替换size_t类型的索引复制上部。

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

答案 1 :(得分:0)

取决于 - size_t取决于平台。

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