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