c++ - 使用 int 而不是 size_t 索引来访问 vector 元素会降低性能吗?

标签 c++ vector int size-t

如果我使用 int 索引访问一个 vector 元素,它会将整数转换为 size_t,然后调用 operator[](size_t)功能?有没有性能下降?

最佳答案

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

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

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

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

关于c++ - 使用 int 而不是 size_t 索引来访问 vector 元素会降低性能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34066907/

相关文章:

c++ - 使用 char 二进制会带来意想不到的结果

C++ 简单图像碰撞

c++ - 如何返回指针 vector (和所有权)C++11

c++ - DirectX CreateOverlay函数库?

c++ - 为什么 constexpr 应该是静态的?

java - 俄罗斯方 block 的 vector 或 Java 数组?

c++ - 我收到此错误 : "glibc detected"

C 操作无符号整数 - 整数溢出

java - 计算重复字母

c++ - 正确地将 B 转换为 MB,或者完全错误