gpt4 book ai didi

c++ - 不能在 Mingw-w64 中使用 "uniform_int_distribution",但 "exponential_distribution"有效

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:41:34 26 4
gpt4 key购买 nike

出于某种原因,我无法使用 uniform_int_distribution (来自 C++ TR1 header <tr1/random> )在 Mingw-w64 G++ 中,即使 exponential_distribution作品。以下是相关代码:

#include <tr1/random>

using namespace std;

int main() {
tr1::random_device rd;
tr1::exponential_distribution<int> exprng(1);
tr1::uniform_int_distribution<> unirng(5, 500);
tr1::mt19937 rnd_gen(rd());
// ...
}

当我尝试编译它时,我得到了这个:

> g++ -o foo.exe -std=c++11 foo.cpp
foo.cpp: In function 'int main()':
foo.cpp:8:5: error: 'uniform_int_distribution' is not a member of 'std::tr1'
tr1::uniform_int_distribution<> unirng(5, 500)
^
foo.cpp:8:35: error: expected primary-expression before '>' token
tr1::uniform_int_distribution<> unirng(5, 500);
^
foo.cpp:8:50: error: 'unirng' was not declared in this scope
tr1::uniform_int_distribution<> unirng(5, 500);
^

我正在运行最新版本的编译器 4.9.2。我已经尝试删除 using namespace std并将命名空间前缀更改为 std::tr1std .有什么想法吗?

最佳答案

好的,我把 C++ TR1 和 C++11 头文件搞混了。

由于误读了 GCC 文档,我使用了 C++ TR1 header ,但事实证明 uniform_int_distribution 是 C++11 的一部分。 C++11 和 C++ TR1 与源代码不完全兼容,需要进行细微调整。

修改后的代码如下:

#include <random>

using namespace std;

int main() {
random_device rd;
exponential_distribution<> exprng(1);
uniform_int_distribution<> unirng(5, 500);
mt19937 rnd_gen(rd());
// ...
}

(我稍后会在程序中转换 exponential_distribution 输出——编译器告诉我模板参数必须是浮点类型。)

关于c++ - 不能在 Mingw-w64 中使用 "uniform_int_distribution",但 "exponential_distribution"有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27463971/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com