嗨,我有一个程序可以处理很多向量和这些向量元素的索引,我想知道:
uint
和之间有区别吗unsigned int
- 最好使用上述类型之一,或者只是使用
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 StudioF12
,您可以通过在文本光标处于uint
查看其定义 时快速检查该事实。