为什么没有未整理的整数类型?

时间:2011-11-08 06:55:36

标签: c++ numbers integer

为什么STL不包含无界的整数数据类型?

我觉得这是一种数据类型,其目的与字符串相似 程序员不必担心溢出的值,并且可以使用更大的数字。

所以我很好奇是否有特定原因让它缺席。

这不是关于如何从第三方库实现或使用它的问题, 但只是一个问题,为什么语言还没有附带一个。 关于此事的任何链接都表示赞赏。

2 个答案:

答案 0 :(得分:3)

您可能意味着arbitrary precision arithmetic或大数字。

也许它不是在C ++中,因为它与广大受众无关。很可能,几乎所有非平凡的C ++代码都会使用STL的某些部分(std::ostream或集合,如std::vector或类似std::string)。

但是很多代码都不需要大数字。

同样,出于同样的原因,图形界面(如Qt)不是STL的一部分。很多人不关心这些问题(例如在服务器代码或数字应用程序中)。

定义标准库是一项艰巨的任务。在我看来,C ++ STL可能已经太大了;不需要在里面添加更多。

如果需要,您可能需要使用GMP

答案 1 :(得分:1)

因为在设计STL时甚至回来了:

在C中已经有明显更好的任意精度整数库。当然它们不是正式的类,但它们使用的结构仍然完成了工作。 STL实现不会真正得到那些需要任意精度整数的人的大量吸收,这导致了我的第二个原因:

并不是很多人实际上需要任意精度整数。那些人,拉入第三方图书馆。对于大多数人来说,当时32位长的人都做过这项工作。对许多人来说,他们仍然这样做而且性能明显更好。即使在没有本机64位操作的系统上,你也可以用一些指令来模拟它们,并且仍然比任意整数实现快得多(无论你做多么薄,任意部分和可能的堆分配都会使它更多比两个较小的整数运算和一个手动携带昂贵。

除此之外,仅仅归结为Stroustrup并没有觉得它有足够的吸引力来适应他对STL的看法。

我认为更好的问题是为什么STL中没有货币或任意精确的十进制类,因为我认为它们通常是一个问题,但答案是相同的。