首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用icpc编译-使用库

用icpc编译-使用库
EN

Stack Overflow用户
提问于 2016-08-15 07:37:58
回答 1查看 1K关注 0票数 2

我正在试图编译一个#包含库的代码

在代码中,我有以下几行:

代码语言:javascript
复制
int main()
{
    clock_t begin = clock();
    random_device rd;
    mt19937 gen(rd());
    uniform_real_distribution<> U(0,1);
    default_random_engine generator;
    rr1=U(gen); 
}

当我使用以下行进行编译时:

代码语言:javascript
复制
 icpc  -std=c++0x -std=c++11 -o main main.cpp -O3

我得到以下错误:

main.cpp(152):错误:标识符"uniform_real_distribution“是未定义的uniform_real_distribution<> U(0,1);^ main.cpp(152):错误:期望表达式uniform_real_distribution<> U(0,1);^ main.cpp(368):错误:标识符" default_random_engine“是未定义的default_random_engine生成器;^ main.cpp(441):错误:标识符"U“是未定义的rr1=U(gen);//时间间隔的第一个随机数 main.cpp(509):警告#1595:非POD(平原老数据)类类型通过省略rr1=U(gen);

知道怎么解决这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2017-09-28 02:15:34

这个问题是由您的Intel编译器icpc版本不完全支持c++11 (实际上是c++0x )造成的。

这意味着:

  • 您需要更新英特尔的编译器以支持uniform_real_distribution
  • 或者使用一些库,如助推PCG等。
  • 或者仍然使用c++11方式,但不使用uniform_real_distribution。例如,直接使用mt19937mt19937_64或任何其他伪随机生成器.
  • 或者使用非c++11方式,即rand()或rand_r()用于不严重的使用。

我想上述部分回答了你的问题。

想知道更多吗?

对于Intel的用户,您可以先检查编译器的兼容性,然后将icc的版本号转换成一个相对相同的gcc版本号,然后从c++0x/c++11支持列表检查

对于GNU的用户,可以直接从c++0x/c++11支持列表检查编译器的兼容性

例如,您可以$icpc -v您可以得到类似于icpc version a.b.c (gcc version x.y.z compatibility)的东西,这意味着您的Inter编译器的版本是a.b.c,其兼容性是gcc版本x.y.z。

既然uniform_real_distribution不支持直到GCC 4.4.5?(GCC 4.4.7被证实支持)

然后,如果x.y.z晚于4.4.5?(当然是4.4.7),则可以使用'uniform_xxx_distribution‘函数族,而不存在兼容性问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38951081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档