如果我使用 int
索引访问一个 vector 元素,它会将整数转换为 size_t
,然后调用 operator[](size_t)
功能?有没有性能下降?
最佳答案
int
和size_t
的主要区别在于int
是有符号的,而size_t
是无符号的。此外,两者可能具有不同的大小,因为这两种类型都是平台特定的并且彼此独立。
当两个大小相同时,从 int
到 size_t
的转换是空操作,因此不会影响性能。
当大小不同时,编译器足够聪明,可以将 int
索引的部分或扩展值传递到 operator []
中,取 size_t
几乎没有开销,因为缩小尺寸需要部分加载,而扩大尺寸需要为上部加载零。但是请注意,为扩展值的上部写入零不是额外的操作,因为它替换从 size_t
类型的索引复制上部。
因此,答案是否定的,您不会看到任何性能差异。
关于c++ - 使用 int 而不是 size_t 索引来访问 vector 元素会降低性能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34066907/