如果我使用int
index来访问vector元素,它会将整数转换为size_t
,然后调用operator[](size_t)
函数吗?是否有任何性能下降?
之间的主要区别int
和size_t
是int
签署,同时size_t
是无符号.另外,两者可以具有不同的大小,因为两种类型都是特定于平台的并且彼此独立.
当两个大小相同时,从int
to 转换size_t
为no-op,因此没有性能影响.
当尺寸是不同的,该编译器足够聪明来传递的部分或展开的值int
索引到operator []
服用size_t
几乎没有开销,因为缩小尺寸需要一个部分负荷,同时扩大了尺寸需要装载零的上部.但是请注意,为扩展值的上半部分写入零不是附加操作,因为它取代了从size_t
类型索引复制上部.
因此,答案是否定的,你不会看到任何性能差异.