c ++ uint,unsigned int,int

Ism*_*ush 25 c++ indexing int unsigned iterator

嗨,我有一个程序,处理很多这些向量的元素的向量和索引,我想知道:

  1. uint和之间有区别吗?unsigned int
  2. 哪个更好地使用上述类型之一或只是使用,int因为我读了一些人说编译器确实更有效地处理int值,但如果我使用int我将不得不总是检查负idxs这是痛苦.
  3. 你认为迭代器更好吗?它比普通索引更有效vectorx[idx]吗?

ps软件将处理大数据流程,良好的性能是必须要求的

AnT*_*AnT 38

  1. C++没有定义这样的类型uint.这必须是"您的"类型,即代码或某些第三方库中定义的类型.人们可以猜到它是一样的unsigned int.可能是unsigned long int或其他东西.无论如何,你必须自己检查一下.

  2. 这是个人风格的问题.例如,我认为必须使用无符号类型来表示自然非负值,例如大小或数量.除了某些特定的上下文之外,有符号和无符号类型之间的性能没有区别.我想说在大多数情况下,它是无符号类型,可以更有效地处理.

  3. 迭代器使实现更通用,即您可以使用顺序访问迭代器,从而使您的实现适用于任何顺序数据结构.通过使用索引,您可以对数据结构施加随机访问要求,这是一项强烈要求.在没有真正需要时强加要求并不是一个好主意.

  • 大多数编译器都将`uint`作为`unsigned int`的简写. (18认同)
  • @Nathan Ernst:不对.你说的是一般的容器,对吧?你应该*永远不要*在容器中使用`size_t`.不能保证`size_t`的范围足以容纳任何容器.`size_t`仅适用于基于数组的容器,但注意到其他情况.此外,在处理标准容器时,您应该使用`container_type :: size_type`而不是`size_t`. (8认同)
  • 在任何情况下,它都不会改变在C和C++中都没有"uint"类型的事实,因此除非考虑特定的编译器,否则关于`uint`的问题没有任何有意义的答案. (2认同)