我正在试图编译一个#包含库的代码
在代码中,我有以下几行:
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);
}当我使用以下行进行编译时:
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);
知道怎么解决这个问题吗?
发布于 2017-09-28 02:15:34
这个问题是由您的Intel编译器icpc版本不完全支持c++11 (实际上是c++0x )造成的。
这意味着:
uniform_real_distribution。mt19937、mt19937_64或任何其他伪随机生成器.我想上述部分回答了你的问题。
想知道更多吗?
对于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‘函数族,而不存在兼容性问题。
https://stackoverflow.com/questions/38951081
复制相似问题