为什么没有未调整大小的Integer类型
Why is there no unsized Integer type?
为什么STL不包含无界整数数据类型?
我觉得它是一种数据类型,其目的与字符串类似。
程序员不必担心溢出的值,并且可以处理更大的数字。
所以我很好奇它的缺席是否有一个具体的原因。
这不是关于如何实现或使用第三方库的问题,但有一个问题,为什么语言还没有一个。
你可能指的是任意精度的算术或大数。
也许它不在c++中,因为它与广泛的受众无关。很可能,几乎任何重要的c++代码都会使用STL的某些部分(std::ostream
或std::vector
之类的集合或std::string
之类的类型)。
但是很多代码不需要大的数字。
同样,图形界面(如Qt)也不是STL的一部分,原因是一样的。很多人不关心这些问题(例如,在服务器代码或数值应用程序中)。定义一个标准库是一项很大的工作。在我看来,c++ STL可能已经太大了;不需要在里面添加太多。
如果需要,可以使用GMP
因为即使在STL设计的时候:
在c语言中已经有了明显更好的任意精度整数库。当然,它们不是正式的类,但它们使用的结构仍然可以完成工作。对于那些需要任意精度整数的人来说,STL实现并不能真正得到大量的吸收,这就引出了我的第二个原因:
并不是很多人真的需要任意精度的整数。如果需要的话,请使用第三方图书馆。在那个年代,对大多数人来说,32位的长度就够了。对许多人来说,他们仍然这样做。性能明显提高。即使在没有原生64位操作的系统上,你也可以用一些指令来模拟它们,并且仍然比任意整数实现要快得多(不管你做得多薄,任意部分和可能的堆分配将使它比两个较小的整数操作和一个手动进位更昂贵)。除此之外,这只是因为Stroustrup觉得它没有足够广泛的吸引力来适应他对STL的看法。
我认为一个更好的问题是为什么STL中没有货币或任意精度十进制类,因为我认为它们是更常见的问题,但答案是相同的。
相关文章:
- ArduinoJson 6.15.2:JsonObject没有命名类型
- 防止主数据类型C++的隐式转换
- 大量序列中核苷酸类型的快速计数
- 如何从C++中的依赖类型中获得它所依赖的类型
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 是否可以初始化不可复制类型的成员变量(或基类)
- 如何获取std::result_of函数的返回类型
- 从父命名空间重载类型
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 我想将一个对T类型的非常量左值引用绑定到一个T类型的临时值
- Openssl 1.1.1d无效使用不完整的类型"struct dsa_st"
- 如果我获得Integer和Double的产品,输出的数据类型是什么
- 如何在C++中为integer、float和double数据类型同时重载运算符
- OpenCV文档说"uchar"是"unsigned integer"数据类型。如何?
- 使用integer显示枚举类型的值
- integer可以被类型转换为指向integer的指针
- 以Integer返回类型返回浮点值
- integer常量太大,以至于在为枚举分配最大类型值时它是无符号的
- 使用mpl::if_和integer模板参数选择类型
- 为什么没有未调整大小的Integer类型