C++ 实施map<;mpz_t,双倍>;在c++;
出于某种原因,我需要一个从任意大数到双倍数的映射,我尝试用c++98(我必须)和Xcode实现它,但它不起作用:C++ 实施map<;mpz_t,双倍>;在c++;,c++,xcode,map,gmp,C++,Xcode,Map,Gmp,出于某种原因,我需要一个从任意大数到双倍数的映射,我尝试用c++98(我必须)和Xcode实现它,但它不起作用: #include <iostream> #include <string> #include <map> #include <vector> #include <set> #include "gurobi_c++.h" #include <sstream> #include "boost/tuple/tuple.
#include <iostream>
#include <string>
#include <map>
#include <vector>
#include <set>
#include "gurobi_c++.h"
#include <sstream>
#include "boost/tuple/tuple.hpp"
#include "boost/tuple/tuple_comparison.hpp"
#include "boost/tuple/tuple_io.hpp"
#include <cmath>
#include <gmp.h>
using namespace std;
using namespace ::boost::tuples;
using namespace ::boost;
int main()
{
map<mpz_t, double>J;
mpz_t a,b,c,n;
string tempstring;
int xrange=5,yrange=5,component=5;
mpz_set_str(n,"11", 10);
J[n]=-1;
return 0;
}
#包括
#包括
#包括
#包括
#包括
#包括“gurobi_c++.h”
#包括
#包括“boost/tuple/tuple.hpp”
#包括“boost/tuple/tuple\u comparison.hpp”
#包括“boost/tuple/tuple_io.hpp”
#包括
#包括
使用名称空间std;
使用namespace::boost::tuples;
使用namespace::boost;
int main()
{
mapJ;
mpz_t a,b,c,n;
字符串tempstring;
int x范围=5,y范围=5,分量=5;
mpz_集_str(n,“11”,10);
J[n]=-1;
返回0;
}
显示的错误是:数组初始值设定项必须是初始值设定项列表。有人能帮我吗?谢谢:)
以下是详细错误页面:
我不知道
mpz\u t
的细节。但是,它似乎是一个数组
您可以通过定义一个类作为映射中的键来解决这个问题
我能够在g++4.8.2中使用以下代码创建一个可执行文件
#include <map>
using namespace std;
typedef int (mpz_t)[2];
struct MyKey
{
// Add a proper implementation of a constructor
// with mpz_t.
MyKey(mpz_t in) {}
// Add a proper implementation of copy constructor.
MyKey(MyKey const& copy) {}
// Add a proper implementation of assignment operator.
MyKey& operator=(MyKey const& rhs)
{
return *this;
}
bool operator<(MyKey const& rhs) const
{
// Add a proper implementation.
return false;
}
mpz_t n;
};
int main()
{
map<MyKey, double> J;
mpz_t n;
J[n] = 1.0;
return 0;
}
#包括
使用名称空间std;
typedef int(mpz_t)[2];
结构MyKey
{
//添加构造函数的正确实现
//用mpz_t。
MyKey(mpz_t in){}
//添加复制构造函数的正确实现。
MyKey(MyKey const©){}
//添加赋值运算符的正确实现。
MyKey和运算符=(MyKey常量和rhs)
{
归还*这个;
}
bool运算符哪一行产生了编译器错误?你能逐字地发布整个编译器错误消息吗?我想是这一行:J[n]=-1;我稍后会发布整个消息:)你为什么不使用gmpxx.h
,类型为mpz_类
?哦,马克,谢谢你,我会尝试…只是在菜单上,我没有看到他们介绍gmpxx.h:)马克,我已经尝试过了,但我面临一个新问题,因为c++98与gmpxx不兼容。你能帮忙吗?谢谢:)我发布了我的问题是:已经有一个官方包装: