栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++大整数类

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++大整数类

你还在为int型的变量存储数据太过于小二烦恼吗?为什么 不试试大整数类?

首先嘞,创建一个struct类

创建类
struct BigInteger
{
    static const int BASE = 100000000;
    static const int WIDTH = 8;
    vector s;
    //创建该结构体的构造函数///
    BigInteger(long long num = 0)
    {
        *this = num;
    }
    //重载赋值运算符/
    BigInteger operator = (long long num)
    {
        s.clear();
        do {
                s.push_back(num % BASE);
                num /= BASE;
           } while(num > 0);
    }
    BigInteger operator = (const string& str)
    {
        s.clear();
        int x, len = (str.lenth() - 1) / WIDTH + 1;
        for(int i = 0; i 

于是,赋值就可以这样 --------------》    x = 12345678 或者 x="1234567898765432123456789"

然后,为了方便输入输出,再次重载流运算符

ostream& operator << (ostream &out, const BigInteger& x)
{
    out << x.s.back();
    for(int i = x.s.size() - 2; i >= 0; i--)
    {
        char buf[20];
        sprintf(buf, "%08d", x.s[i]);
        for(int j = 0; j < strlen(buf); j++)
        {
            out << buf[j];
        }
    }
    return out;
}


istream& operator >> (istream &in, BigInteger& x)
{
    string s;
    if(!(in >> s)) return in;
    x = s;
    return in;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1026773.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号