Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 实施map<;mpz_t,双倍>;在c++;_C++_Xcode_Map_Gmp - Fatal编程技术网

C++ 实施map<;mpz_t,双倍>;在c++;

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.

出于某种原因,我需要一个从任意大数到双倍数的映射,我尝试用c++98(我必须)和Xcode实现它,但它不起作用:

#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不兼容。你能帮忙吗?谢谢:)我发布了我的问题是:已经有一个官方包装: