[英]c++ uint , unsigned int , int
嗨,我有一个程序可以处理很多向量和这些向量元素的索引,我想知道:
uint
和unsigned int
之间有区别uint
int
因为我读到一些人说编译器确实更有效地处理 int 值,但是如果我使用int
我将不得不始终检查负 idxs 这很痛苦。vectorx[idx]
更有效吗?ps 该软件将处理大数据处理,良好的性能是必须的
C++ 没有定义uint
这样的类型。 这必须是“您的”类型,即在您的代码或某些第三方库中定义的类型。 人们可以猜测它与unsigned int
相同。 虽然可以是unsigned long int
或其他东西。 无论如何,你必须自己检查。
这是个人风格的问题。 例如,我认为必须使用无符号类型来表示自然的非负值,例如大小或数量。 除了某些特定上下文之外,有符号和无符号类型之间的性能没有区别。 我会说在大多数情况下,无符号类型会得到更有效的处理。
迭代器使实现更加通用,即您可以使用顺序访问迭代器,从而使您的实现适用于任何顺序数据结构。 通过使用索引,您可以对数据结构强加随机访问要求,这是一个很强的要求。 在没有真正需要的情况下强加强要求并不是一个好主意。
如果您按顺序循环遍历向量,请务必使用迭代器。 无论索引类型如何,都存在与索引相关的开销,可以通过迭代来避免。
1) uint = unsigned int,实际上uint只是unsigned int的一个typedef (在编译时会被unsigned int替换)。
2)如果你想在你的代码中添加一些与uint相关的“安全性”,你肯定会避免负值。
3)如果您按顺序运行向量,请使用迭代器,它们针对顺序循环进行了优化(它们是某种指针)。
正如其他海报所指出的那样, uint 可能是unsigned
int 的 typedef 如果您使用的是Visual Studio ,您可以通过在文本光标位于uint
按F12
快速检查该事实以查看其定义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.