C++随机生成器 mt19937 中,它是在<random>还是<bits/random.h>?
C++ random generator mt19937, is it in <random> or <bits/random.h>?
我已经从这里和(更明确地)这里确认了您需要#include<random>
才能使用std::mt19937
,但当我在CLion中这样做时,CLion会将其标记为红色,并表明它在<bits/random.h>
中。那是哪一个呢?我应该同时#include
吗?但我认为扩展名为.h
的头文件不推荐使用?
顺便说一句,我在CentOS Linux 7.1.1503版本上使用CLion 1.2.1和GCC 4.8.3。
它是<random>
。
<bits/random.h>
是GCC特定的实现。仅包括<random>
。
CLion通过搜索实际定义的遗漏类来实现这一点,对于GCC,它是<bits/random.h>
,这就是它建议包含它的原因。这不是正式的错误,但这是非跨平台的,甚至是非交叉编译器的。
您应该升级GCC(2015年11月的当前版本是GCC 5.2,它对C++11的支持要好得多),并将其调用为g++ -std=c++11
(也可以使用-Wall -Wextra -g
来获取所有警告、更多警告和调试信息),然后当然使用#include <random>
,如本文所述。
(升级到GCC 5.2可以通过从下载的源代码中编译来完成;如果需要,可以问一些其他问题)
如果您只是直接#include <bits/random.h>
,它是特定于实现的(永远不要为自己包含bits/*.h
内部标头),并且IIRC会出现错误(或者至少是严重警告)。
你不需要使用Clion。编译器是GCC。
相关文章:
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 呼叫运营商<<临时
- 如何防止clang格式在流运算符调用之间添加换行符<<
- <<操作员在下面的行中工作
- <random>在实践中应该实际使用哪个随机数引擎? std::mt19937?
- 是否可以为boost::random::uniform_int_distribution<>设置确定性种子?
- 'generate'不是窗口头文件中'std::random_device'的成员<random>
- 数组打印"random"值时出现问题
- 如何显式调用运算符<<
- 使用""的不可重现的随机数<random>
- <random> 尽管不是常量,但所有发行版都是线程安全的吗?
- 从时间生成'random'数字?
- 无法在 c++ 中包含"random"头文件
- Nemiver 找不到文件 /build/glibc-LK5gWL/glibc-2.23/stdlib/random.c
- 如何在 c++ 中正确读取 GRC 块"Random Source"的字节输出数据到自己的 OOT 块中?
- 模板操作员&lt;未打电话
- C / CUDA中的模板方法是3个角括号(&lt;&lt;&lt;)
- C - 创建矢量&lt; vector&lt; double&gt;&gt;矩阵具有分配而不是inizializ
- 错误:调用"std::vector<:vector<int>>::p ush_back(std::vector<std::__cxx11::basic_string<
- C 建造者Clang STD :: Sill,找不到超载的操作员&lt;