⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vlong.h

📁 very long 整数类
💻 H
字号:
#ifndef VLONG_H_
#define VLONG_H_

#include <iostream>
#include <string>
#include <vector>
#include <deque>
#include <iterator>
#include <sstream>
#include <stdexcept>


using std::cout;
using std::cin;
using std::string;
using std::endl;
using std::vector;
using std::deque;
using std::cerr;
using std::stringstream;
using std::ostream;
using std::istream;
using std::domain_error;

const int seg_length = 8;
const long seg_num = 100000000;
const long divide = 10000;

class vlong
{
public:
	vlong();
	vlong(const vlong&);
	vlong(const string&);
	vlong(const int&);
	vlong(const char*);
	vlong(const vector<long>&, bool);
	
	vlong& operator=(const vlong&);
	vlong& operator=(const string&);
	vlong& operator=(const int&);
	vlong& operator=(const char*);
	vlong& operator=(const vector<long>&);
	
	vlong& operator++();
	vlong& operator--();

	
	void output() const;
	void output_num_vector() const;

	const string get_str() const;
	const bool get_sig() const;
	void set_sig(bool);
	const int length() const;
	const vector<long> get_vec() const;

protected:
	void input();
	void str_to_vec();
	void vec_to_str();
	void check_input();
	bool check_positive(string&);

private:
	string num_str;
	vector<long> num_vector;
	bool is_positive;
};

ostream& operator<<(ostream&, const vlong&);
istream& operator>>(istream&, vlong&);

const vlong operator+(const vlong&, const vlong&);
const vlong operator-(const vlong&); 
const vlong operator-(const vlong&, const vlong&);
const vlong operator*(const vlong&, const vlong&);
const vlong operator/(const vlong&, const vlong&);
const vlong operator%(const vlong&, const vlong&);
const vlong operator+(const vlong&, const int);
const vlong operator-(const vlong&, const int);
const vlong operator*(const vlong&, const int);
const vlong operator/(const vlong&, const int);
const vlong operator%(const vlong&, const int);
const vlong operator+(const vlong&, const string&);
const vlong operator-(const vlong&, const string&);
const vlong operator*(const vlong&, const string&);
const vlong operator/(const vlong&, const string&);
const vlong operator%(const vlong&, const string&);
const vlong operator+(const int, const vlong&);
const vlong operator-(const int, const vlong&);
const vlong operator*(const int, const vlong&);
const vlong operator/(const int, const vlong&);
const vlong operator%(const int, const vlong&);
const vlong operator+(const string&, const vlong&);
const vlong operator-(const string&, const vlong&);
const vlong operator*(const string&, const vlong&);
const vlong operator/(const string&, const vlong&);
const vlong operator%(const string&, const vlong&);
const vlong operator+(const int, const string&);
const vlong operator-(const int, const string&);
const vlong operator*(const int, const string&);
const vlong operator/(const int, const string&);
const vlong operator%(const int, const string&);
const vlong operator+(const string&, const int);
const vlong operator-(const string&, const int);
const vlong operator*(const string&, const int);
const vlong operator/(const string&, const int);
const vlong operator%(const string&, const int);
const vlong operator+=(vlong&, const vlong&);
const vlong operator+=(vlong&, const int);
const vlong operator+=(vlong&, const string&);
const vlong operator-=(vlong&, const vlong&);
const vlong operator-=(vlong&, const int);
const vlong operator-=(vlong&, const string&);
const vlong operator*=(vlong&, const vlong&);
const vlong operator*=(vlong&, const int);
const vlong operator*=(vlong&, const string&);
const vlong operator/=(vlong&, const vlong&);
const vlong operator/=(vlong&, const int);
const vlong operator/=(vlong&, const string&);
const vlong operator%=(vlong&, const vlong&);
const vlong operator%=(vlong&, const int);
const vlong operator%=(vlong&, const string&);



#include "vlong.cpp"

#endif /*VLONG_H_*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -