为什么没有未调整大小的Integer类型

Why is there no unsized Integer type?

本文关键字:Integer 类型 调整 为什么      更新时间:2023-10-16

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

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

所以我很好奇它的缺席是否有一个具体的原因。

这不是关于如何实现或使用第三方库的问题,但有一个问题,为什么语言还没有一个。

你可能指的是任意精度的算术或大数。

也许它不在c++中,因为它与广泛的受众无关。很可能,几乎任何重要的c++代码都会使用STL的某些部分(std::ostreamstd::vector之类的集合或std::string之类的类型)。

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

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

定义一个标准库是一项很大的工作。在我看来,c++ STL可能已经太大了;不需要在里面添加太多。

如果需要,可以使用GMP

因为即使在STL设计的时候:

在c语言中已经有了明显更好的任意精度整数库。当然,它们不是正式的类,但它们使用的结构仍然可以完成工作。对于那些需要任意精度整数的人来说,STL实现并不能真正得到大量的吸收,这就引出了我的第二个原因:

并不是很多人真的需要任意精度的整数。如果需要的话,请使用第三方图书馆。在那个年代,对大多数人来说,32位的长度就够了。对许多人来说,他们仍然这样做。性能明显提高。即使在没有原生64位操作的系统上,你也可以用一些指令来模拟它们,并且仍然比任意整数实现要快得多(不管你做得多薄,任意部分和可能的堆分配将使它比两个较小的整数操作和一个手动进位更昂贵)。

除此之外,这只是因为Stroustrup觉得它没有足够广泛的吸引力来适应他对STL的看法。

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